J'ai un problème étrange lorsque j'effectue le test du contrôleur en jeu 2.1.Test du contrôleur Playframework2 [Java]
package controllers;
import static org.fest.assertions.Assertions.assertThat;
import static play.mvc.Http.Status.OK;
import static play.test.Helpers.callAction;
import static play.test.Helpers.charset;
import static play.test.Helpers.contentType;
import static play.test.Helpers.status;
import models.Section;
import models.Topic;
import org.junit.Test;
import play.mvc.Result;
public class TopicsTest extends BaseControllerTest{
@Test
public void testCallList() {
Section s = new Section();
s.name = "Music section";
s.id = 1L;
s.description = "section about music";
s.save();
System.out.println(Section.find.where().eq("name", "Music section").findUnique().id); // output 1
Result result = callAction(controllers.routes.ref.Topics.list(1));
assertThat(status(result)).isEqualTo(OK);
}
}
code du contrôleur est vraiment simple et fonctionne sur dev. mode juste bien. Check it:
public static Result list(Long id) {
return ok(list.render(Section.find.byId(id)));
}
Erreur trace de la pile:
java.lang.RuntimeException: java.lang.NoSuchMethodError: models.Section.getName()Ljava/lang/String;
at play.libs.F$Promise$6.apply(F.java:401)
at scala.concurrent.Future$$anonfun$map$1.apply(Future.scala:253)
at scala.concurrent.Future$$anonfun$map$1.apply(Future.scala:249)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:29)
at akka.dispatch.BatchingExecutor$Batch$$anonfun$run$1.liftedTree1$1(BatchingExecutor.scala:67)
at akka.dispatch.BatchingExecutor$Batch$$anonfun$run$1.processBatch$1(BatchingExecutor.scala:66)
at akka.dispatch.BatchingExecutor$Batch$$anonfun$run$1.apply$mcV$sp(BatchingExecutor.scala:82)
at akka.dispatch.BatchingExecutor$Batch$$anonfun$run$1.apply(BatchingExecutor.scala:59)
at akka.dispatch.BatchingExecutor$Batch$$anonfun$run$1.apply(BatchingExecutor.scala:59)
at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:72)
at akka.dispatch.BatchingExecutor$Batch.run(BatchingExecutor.scala:58)
at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:137)
at scala.concurrent.forkjoin.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1441)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:262)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:975)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1478)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104)
Caused by: java.lang.NoSuchMethodError: models.Section.getName()Ljava/lang/String;
at views.html.topics.list$.apply(list.template.scala:32)
at views.html.topics.list$.render(list.template.scala:62)
at views.html.topics.list.render(list.template.scala)
at controllers.Topics.list(Topics.java:24)
at controllers.ref.ReverseTopics$$anonfun$list$3.apply(routes_reverseRouting.scala:761)
at controllers.ref.ReverseTopics$$anonfun$list$3.apply(routes_reverseRouting.scala:761)
at play.core.Router$HandlerInvoker$$anon$6$$anon$2.invocation(Router.scala:141)
at play.core.j.JavaAction$$anon$1.call(JavaAction.scala:31)
at play.core.j.JavaAction$$anon$2.apply(JavaAction.scala:74)
at play.core.j.JavaAction$$anon$2.apply(JavaAction.scala:73)
at play.libs.F$Promise$PromiseActor.onReceive(F.java:420)
at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:159)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:425)
at akka.actor.ActorCell.invoke(ActorCell.scala:386)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:230)
at akka.dispatch.Mailbox.run(Mailbox.scala:212)
at akka.dispatch.ForkJoinExecutorConfigurator$MailboxExecutionTask.exec(AbstractDispatcher.scala:502)
... 4 more
S'il vous plaît aidez-moi à trouver une solution, ou ce test faux.
Pouvez-vous décrire le problème plus? – fvrghl
Bien sûr. Il y a une application de forum qui fonctionne en dev. mode. J'ai un index.scala.html voici des sections de mon forum (elles sont stockées dans db). Lorsque vous cliquez sur le lien de la section u allez sur l'url "/ topics/1", et le contrôleur ci-dessus fonctionne (pas de mauvaise demande). Mais quand j'essaie de tester cela, il échoue à cause d'une mauvaise demande. –
Pouvez-vous poster l'erreur que vous obtenez à cause de la mauvaise demande? – fvrghl