我一直在查看StackOverflow上的一些帖子,以了解如何使用MYSQL数据库设置测试。我只想测试一些控制器方法,这需要一个测试数据库,并且需要一些数据才能返回有意义的结果。我想使用真实的MYSQL数据库,因为这是我将在生产中使用的,而且我已经读到MYSQL和Play提供的InMemory数据库之间存在相当多的差异。
在像这个和这篇关于测试Play!应用程序的博客中,这些帖子展示了初始化一个FakeApplication对象的示例,并调用Helper.start(fakeApp)。
对于Helper.start(FakeApplication app),文档给出了以下描述:
我希望以上代码可以配置Ebean使用我的测试数据库,但当我尝试执行像 Ebean.save() 这样的方法时,会出现错误,说没有用Ebean注册默认的数据库。为了注册,我需要填写一个 ServerConfig 对象,并从 EbeanServerFactory 创建一个 EbeanServer。在这种情况下,将设置映射传递给 FakeApplication 对象是否有意义?再次提问,启动 FakeApplication 究竟有什么作用?它如何使用?
提前感谢您的帮助。
在像这个和这篇关于测试Play!应用程序的博客中,这些帖子展示了初始化一个FakeApplication对象的示例,并调用Helper.start(fakeApp)。
对于Helper.start(FakeApplication app),文档给出了以下描述:
好的,但是调用start实际上会触发哪些进程,这会给我带来什么测试结果呢?启动一个新应用程序。
Map<String, String> settings = new HashMap<String, String>();
settings.put("db.default.url", "jdbc:mysql://localhost/testdb");
settings.put("db.default.user", "root");
settings.put("db.default.password", "");
app = Helpers.fakeApplication(settings);
Helpers.start(app);
我希望以上代码可以配置Ebean使用我的测试数据库,但当我尝试执行像 Ebean.save() 这样的方法时,会出现错误,说没有用Ebean注册默认的数据库。为了注册,我需要填写一个 ServerConfig 对象,并从 EbeanServerFactory 创建一个 EbeanServer。在这种情况下,将设置映射传递给 FakeApplication 对象是否有意义?再次提问,启动 FakeApplication 究竟有什么作用?它如何使用?
提前感谢您的帮助。