Play Framework 2.3 中模型的单元测试
Unit Testing of a model in Play Framework 2.3
我们最近从 Play Framework 2.1 迁移到 2.3,一些单元测试停止工作。
在这个特定的单元测试中,我使用了一个从 ebean 扩展模型的对象。我确保不使用 ebean 中的任何函数(例如 find()
、save()
或 update()
)。
不幸的是,仅仅通过创建我的对象,我就得到了一个异常,因为它试图启动 Model.Finder
成员,我很确定它在迁移之前没有这样做。我该如何克服这个问题?
我的设置函数在 new
调用时抛出异常。
@Before
public void setUp() throws Exception {
SignageScheduleEntry allTheTimeSchedule = new SignageScheduleEntry();
}
我的对象本身,它在调试单元测试时在新 Model.Finder 上失败:
public static Model.Finder<Long,SignageScheduleEntry> find = new Model.Finder<>(Long.class, SignageScheduleEntry.class);
public SignageScheduleEntry() throws InvalidPeriodException {
....
}
简而言之,我想在我的单元测试中使用我的对象而不使用 ebean 垃圾,就像在任何单元测试中使用任何对象一样。我怎样才能做到这一点?
谢谢!
如图所示:https://github.com/jamesward/play2torial/blob/master/JAVA.md#create-a-model
您需要像这样创建一个 "fakeApplication":
import org.junit.Test;
import static play.test.Helpers.fakeApplication;
import static play.test.Helpers.running;
import static org.fest.assertions.Assertions.assertThat;
import models.Task;
public class TaskTest {
@Test
public void create() {
running(fakeApplication(), new Runnable() {
public void run() {
Task task = new Task();
task.contents = "Write a test";
task.save();
assertThat(task.id).isNotNull();
}
});
}
}
如果这不起作用,或者如果这不是您想要的,另一种方法更复杂,更复杂,来自 Play Java 文档:
https://www.playframework.com/documentation/2.3.x/JavaTest#Unit-testing-models
您基本上必须为模型创建包装器,并在单元测试中模拟包装器。
我们最近从 Play Framework 2.1 迁移到 2.3,一些单元测试停止工作。
在这个特定的单元测试中,我使用了一个从 ebean 扩展模型的对象。我确保不使用 ebean 中的任何函数(例如 find()
、save()
或 update()
)。
不幸的是,仅仅通过创建我的对象,我就得到了一个异常,因为它试图启动 Model.Finder
成员,我很确定它在迁移之前没有这样做。我该如何克服这个问题?
我的设置函数在 new
调用时抛出异常。
@Before
public void setUp() throws Exception {
SignageScheduleEntry allTheTimeSchedule = new SignageScheduleEntry();
}
我的对象本身,它在调试单元测试时在新 Model.Finder 上失败:
public static Model.Finder<Long,SignageScheduleEntry> find = new Model.Finder<>(Long.class, SignageScheduleEntry.class);
public SignageScheduleEntry() throws InvalidPeriodException {
....
}
简而言之,我想在我的单元测试中使用我的对象而不使用 ebean 垃圾,就像在任何单元测试中使用任何对象一样。我怎样才能做到这一点?
谢谢!
如图所示:https://github.com/jamesward/play2torial/blob/master/JAVA.md#create-a-model
您需要像这样创建一个 "fakeApplication":
import org.junit.Test;
import static play.test.Helpers.fakeApplication;
import static play.test.Helpers.running;
import static org.fest.assertions.Assertions.assertThat;
import models.Task;
public class TaskTest {
@Test
public void create() {
running(fakeApplication(), new Runnable() {
public void run() {
Task task = new Task();
task.contents = "Write a test";
task.save();
assertThat(task.id).isNotNull();
}
});
}
}
如果这不起作用,或者如果这不是您想要的,另一种方法更复杂,更复杂,来自 Play Java 文档: https://www.playframework.com/documentation/2.3.x/JavaTest#Unit-testing-models
您基本上必须为模型创建包装器,并在单元测试中模拟包装器。