など。EasyMockを使ってオブジェクトを部分的にモックする方法はありますか?
public class Foo Implements Fooable {
public void a() {
// does some stuff
bar = b();
// moar coadz
}
public Bar b() {
// blah
}
// ...
}
そして、私はFoo.a
をテストしたい:のは、私はこのクラスを持っているとしましょう。私はFoo.b
を模倣したい、私は別にそのメソッドをテストしているので。
public class FooTest extends TestCase {
public void testA() {
Fooable foo = createPartialMock(
Fooable.class, // like with createMock
Foo // class where non-mocked method implementations live
);
// Foo's implementation of b is not used.
// Rather, it is replaced with a dummy implementation
// that records calls that are supposed to be made;
// and returns a hard coded value (i.e. new Bar()).
expect(foo.b()).andReturn(new Bar());
// The rest is the same as with createMock:
// 1. Stop recording expected calls.
// 2. Run code under test.
// 3. Verify that recorded calls were made.
replay(foo);
foo.a();
verify(foo);
}
}
私は私が私のためにこの種のものを行うには私自身のFoo
サブクラスを書くことができます知っている:私は何を想像してることは、このようなものです。しかし、私はそれが退屈である、すなわち自動化されるべきであるので、私がする必要がなければ、私はそれをしたくありません。
ありがとうを使用して部分的なモックを作成することができます!残念ながら、classextensionsを使用するには、Junit 4が必要になると思われます。(:http://easymock.org/EasyMock2_2_ClassExtension_Documentation.htmlこれは、Junit 3ユーザーが運が良かったことを意味します。 – allyourcode
ああ...私もあなたの事例を考えていますが、簡単なモックを使用するのではなく、メソッドをオーバーライドしてモックを作成し、モック 'Bar'オブジェクトを拡張モッククラスから戻します。 – raddykrish
EasyMock 3.1 ClassExtensionsライブラリは廃止され、一部の模擬はEasyMock自体に移されました。これはJUnit 3で動作するので運が良いと言います:http://easymock.org/EasyMock3_1_Documentation.html – DoctorRuss