我有我的单元测试中的任何问题,我沿着这个线的东西。如果使用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还是尝试手动执行?提供测试课程以增加获得准确帮助的机会。 –
你最终怎么解决这个问题? –