3

コントローラーに依存関係を注入するために、Guice でプレイ フレームワーク 2.1.4 を使用しています。

私のテストでは、 を呼び出したいと思いますHelpers.callAction。彼らcontrollers.routes.ref.Mycontrollerは静的ではないので、私の行動については知りません。

HandlerRefどういうわけかそれを渡す方法はありcallActionますか?

ありがとう

4

1 に答える 1

0

Jukito https://code.google.com/p/jukito/を使用することになります

クリーンアップする必要があります (そのための独自のヘルパーを作成できます) が、基本的な考え方は次のとおりです。

@RunWith(JukitoRunner.class)
public class AuthenticationTest {
    @Inject
    private Authentication authentication;

    private String username = "username";
    private String password = "password";

    @Before
    public void setupMocks(UserDao mockedUserDao) throws RecordNotFoundException {
        ObjectNode json = Json.newObject();
        json.put("username", username);
        json.put("password", password);

        User mockedUser = mock(User.class);
        when(mockedUser.getEmail()).thenReturn("email@test.com");

        Http.RequestBody mockedBody = mock(Http.RequestBody.class);
        when(mockedBody.asJson()).thenReturn(json);

        Http.Request mockedRequest = mock(Http.Request.class);
        when(mockedRequest.body()).thenReturn(mockedBody);

        when(mockedUserDao.findByEmailAndPassword(anyString(), anyString())).thenReturn(mockedUser);

        Http.Context.current.set(new Http.Context((long) 1, mock(play.api.mvc.RequestHeader.class),
                mockedRequest, new HashMap<String, String>(), new HashMap<String, String>(),
                new HashMap<String, Object>()));
    }

    @Test
    public void loginTest(UserDao mockedUserDao) throws RecordNotFoundException {
        //Arrange
        FakeApplication app = Helpers.fakeApplication();
        start(app);

        ObjectNode json = Json.newObject();
        json.put("username", username);
        json.put("password", password);

        //act
        authentication.login();
        stop(app);

        //Assert
        verify(mockedUserDao).findByEmailAndPassword(anyString(), anyString());
        assertEquals(200, status(result));
    }
}
于 2013-10-18T04:01:41.070 に答える