3

class を間接的に使用するテストケースがありますFoo。テストケースの目的上、 Foo が何であるかは気にしません。私はそれを嘲笑することができるはずです。

Foo mock = EasyMock.createMock(Foo.class);

ただし、テストケースは Foo でいくつかのメソッドを呼び出すライブラリを使用します。これらのメソッドの一部はオブジェクトを返し、このライブラリはそれらの返されたオブジェクトに対していくつかのメソッドを呼び出します。このテストの目的では、これらのオブジェクトが何であるかは問題ではなく、それらが null ではなく、NullPointerExceptions を引き起こさないということだけです。

私は、このライブラリが呼び出すすべてのオブジェクトとメソッドに対して、次のような期待呼び出しを多数追加してきました。

Bar bar = EasyMock.createMock(Bar.class);
Baz baz = EasyMock.createMock(Baz.class);
EasyMock.expect(mock.getBar()).andReturn(bar).anyTimes();
EasyMock.expect(bar.getBaz()).andReturn(baz).anyTimes();

基本的に、このライブラリが最終的に呼び出すメソッドのいずれかに対する期待を何度も作成します。

繰り返しますが、オブジェクト自体は私のテストの目的には関係ありません。ライブラリは、ほとんどの場合、それらが非 null である必要があります。

これを自動化する方法はありますか?私が望むのは、ある種の「ディープ モック」機能であり、EasyMock に、モック オブジェクトを介して取得されたすべてのオブジェクトに対して自動的にモック オブジェクトを返すように指示できます。

4

1 に答える 1

2

mockito にはこの機能が組み込まれていることがわかりました。

Foo mock = Mockito.mock(Foo.class, Mockito.RETURNS_DEEP_STUBS);
于 2013-01-23T06:06:53.247 に答える