No se puede pasar a excepción de la devolución de llamada anónima en la prueba de play Framework

StackOverflow https://stackoverflow.com//questions/21003479

Pregunta

Tengo la siguiente prueba de integración como parte de un proyecto Marco de juego.

@Test(expected = OAuthProblemException.class)
public void testFailedCredentials() throws OAuthProblemException, OAuthSystemException {
    running(testServer(3333, fakeApplication(inMemoryDatabase())), HTMLUNIT, new F.Callback<TestBrowser>() {
        public void invoke(TestBrowser browser) throws OAuthProblemException, OAuthSystemException {
            OAuthClientRequest request = OAuthClientRequest
                    .tokenLocation("http://localhost:3333/oauth2/access_token")
                    .setGrantType(GrantType.PASSWORD)
                    .setClientId("client_id")
                    .setClientSecret("client_secret")
                    .setUsername("username")
                    .setPassword("password_should_not_pass")
                    .buildBodyMessage();

            OAuthClient oAuthClient = new OAuthClient(new URLConnectionClient());

            oAuthClient.accessToken(request); //throws OAuthProblemException
        }
    });
}

La línea oAuthClient.accessToken(request); lanza OAuthProBlemException, que es correcta.Mi problema es que debido a la devolución de llamada interior anónima, no tengo la posibilidad de propagar la excepción y hacer algo así como @Test(expected = OAuthProblemException.class) como en mi código.

Podría captar la excepción y marcar la prueba como un éxito dentro de la sección de captura, pero el juego de pruebas de marco no se basa en los métodos de éxito () o fracaso (que pueda encontrar), lo que resulta en hacer algo estúpidocomo este

try {
    oAuthClient.accessToken(request);
    assertThat("This credentials should fail").isEmpty();//Force a fail
} catch (OAuthProblemException e) {
    assertThat(e).isInstanceOf(OAuthProblemException.class);//Force a success. I could probably skip this line
}

No creo que esto se vea muy intuitivo.¿Alguna sugerencia cómo resolver esto de una manera mejor?

¡Gracias!

¿Fue útil?

Solución

OK, encontró la función FALL (): -)

import static org.junit.Assert.*;

Con esto puedo hacer lo siguiente:

try {
    oAuthClient.accessToken(request);
    fail();
} catch (OAuthProblemException e) {
    //success
}

que se ve mucho mejor, creo.Si puede pensar en soluciones alternativas, como una manera de propagar la excepción o similar, me encantaría escuchar al respecto.

(estúpido yo)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top