我有我的單元測試中的任何問題,我沿着這個線的東西。如果使用Transactional註釋blargh
函數,則模擬注入將在someService上覆蓋。如果我刪除交易,模擬停留在那裏。從看代碼看來,當服務中的函數用transactinal註釋時,Spring懶洋洋地加載服務,但是在服務沒有的時候急切地加載服務。這覆蓋了我注入的模擬。如何注入@ @Service的@Transactional
有沒有更好的方法來做到這一點?
@Component
public class SomeTests
{
@Autowired
private SomeService someService;
@Test
@Transactional
public void test(){
FooBar fooBarMock = mock(FooBar.class);
ReflectionTestUtils.setField(someService, "fooBar", fooBarMock);
}
}
@Service
public class someService
{
@Autowired FooBar foobar;
@Transactional // <-- this causes the mocked item to be overridden
public void blargh()
{
fooBar.doStuff();
}
}
你可以生成代碼(和配置),將重現此? –
從你的問題我假設你沒有單元測試,而是與Spring上下文和一些豆子的整合測試嘲笑。你如何將FooBar類的模擬注入到Spring上下文中?你使用Springockito還是嘗試手動執行?提供測試課程以增加獲得準確幫助的機會。 –
你最終怎麼解決這個問題? –