Junit 模拟bean并在上下文级别定义其行为
我的配置中很少有模拟bean,它们是许多其他bean的依赖项。 我想定义它的行为,无论其输入如何,在任何方法调用时都返回null。 我用的是easyMockJunit 模拟bean并在上下文级别定义其行为,junit,easymock,Junit,Easymock,我的配置中很少有模拟bean,它们是许多其他bean的依赖项。 我想定义它的行为,无论其输入如何,在任何方法调用时都返回null。 我用的是easyMock TestClass { @Autowired ActualClass ac; public Test() { ac.dosometing(); } } ActualClass { @Autowired MockedClass mockedObject; public dosomething() { mockedObejct.s
TestClass
{
@Autowired
ActualClass ac;
public Test()
{
ac.dosometing();
}
}
ActualClass
{
@Autowired
MockedClass mockedObject;
public dosomething()
{
mockedObejct.someMethod(); //i want this to be returned null in any scenario for the test cases
}
}
}
基本上:
MockedClass mock = createNiceMock(MockedClass.class);
replay(mock);
ac.setMockedClass(mock);
使用JUnit规则和注释的现代版本将是
public class MyTest
{
@Rule
public EasyMockRule rule = new EasyMockRule(this);
@Mock(type=MockType.NICE)
MockedClass mockedObject;
@TestSubject
ActualClass ac = new ActualClass();
@Test
public void test() {
ac.doSomething();
}
}
class ActualClass {
private MockedClass mockedObject;
public void doSomething() {
mockedObject.someMethod();
}
}
class MockedClass {
public void someMethod() {}
}
谢谢我用手动注入模拟对象的老方法。我也要试试这个。这将大大减少我的努力。