私は Spock と Mockito を使用していますが、Mocks から価値を得る方法を理解するのに苦労しています。
UserResource
EJB3 サービス層と通信する REST インターフェース用の RESTful サービスを構築しようとしています。
EJB3 サービスには、別の開発者が作成する予定の新しいメソッドが必要です。したがって、REST インターフェイスの代わりに Mock を作成することにしました。
Here is my Spock Test:
package commonapi.test
import commonapi.command.request.UserCreateRequest
import commonapi.command.resource.UserResource
import commonapi.response.CommandResponse
import org.mockito.Mock
import org.mockito.MockitoAnnotations
import spock.lang.Specification
import static org.mockito.BDDMockito.given
import static org.mockito.Mockito.*
/**
* Specification for Create User Command.
*/
class CreateUserTest extends Specification
{
/**
* Mocked Resource.
*/
@Mock
UserResource mockedUserResource;
def setup()
{
MockitoAnnotations.initMocks(this)
}
def "Mocked Resource Create Single User"()
{
given:
UserCreateRequest createRequest = new UserCreateRequest()
given(mockedUserResource.createUser(createRequest)).willReturn(new CommandResponse())
when:
CommandResponse commandResponse = mockedUserResource.createUser(createRequest)
then:
commandResponse != null
}
}
コンパイルされ、テストが実行されます(合格)
問題は、実際には何も「テスト」していないように感じることです。私が理解できる限り、Mockito Mocks は単に「空のオブジェクト」であり、「動作を設定」できます。つまり、x を指定すると、y が返されます。
ただし、動作を設定している場合は、本質的に、その特定の Spock Feature Method の目的でどのように動作するかをコーディングしています。これは、実装された後の実際のものと同じである場合と異なる場合があります。
基本的に、私はテストの目的でモックの動作を構築しており、実際のものをテストしていません。
モックを活用して開発中のシステムを適切にテストする方法について、概念的に少し苦労していると思います。
どんな提案や洞察も大歓迎です。前もって感謝します!