我对在JUnit测试套件中嘲弄(mock)对象很感兴趣,但是我只发现使用依赖注入来注入(mock)对象的mock框架。然而,我希望能够在不需要注入(mock)对象的情况下,像Python中的@patch()一样嘲弄类/函数。
简单示例:
//dependency injection
public String bar(Foo foo) {
return foo.foo(); //just pass in mock Foo object
}
//.... onto test code
Foo mockedFoo = <Mocked Foo object>;
String response = bar(mockedFoo);
assertEqual(response, <mockedFoo return value>);
//case I am looking for
public String bar() {
Foo foo = new Foo(); //how to create mock object here?
return foo.foo(); //or simply how to mock a single function?
}
//... onto test code
<force the Foo class or foo method to be mocked from here without touching bar() source code>
String response = bar();
assertEqual(response, <mocked response>);
Foo
或者更好的是实现与Foo
相同的接口来获得一个简单的模拟对象。 - mike