我一直在查看StackOverflow上的一些帖子,看看如何使用MYSQL数据库设置测试.
我只是想测试一些控制器方法,这些方法需要一个带有一些数据的测试数据库才能返回有意义的结果.我想使用一个真正的MYSQL数据库,因为我将在生产中使用它,我已经读过MYSQL和Play提供的InMemory数据库之间存在很多差异.
在这个和这个博客关于测试Play的帖子中!应用程序,帖子显示了使用数据库参数初始化FakeApplication对象然后调用Helper.start(fakeApp)的示例.
所述文档为Helper.start(FakeApplication应用程序)提供了以下描述:
启动一个新的应用程序.
太好了.但实际上是通过调用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);
Run Code Online (Sandbox Code Playgroud)
我希望上面的代码将Ebean配置为使用我的测试数据库,但是当我尝试执行诸如Ebean.save()之类的方法时,我得到一个错误,表示没有向Ebean注册默认数据库.为了注册我需要填充SERVERCONFIG对象,并创建一个EbeanServer从EbeanServerFactory.在那种情况下,将设置映射传递给FakeApplication对象有什么意义吗?再一次,启动FakeApplication实际上做了什么?它怎么用?
提前致谢.
我想单元测试我的数据库操作,我发现了这段代码.但是,我收到了以下错误:
[CityGame] $ test
[info] Compiling 2 Java sources to /Users/pmichna/Documents/code/citygame/target/scala-2.10/test-classes...
[error] /Users/pmichna/Documents/code/citygame/test/models/BaseModelTest.java:31: error: constructor DdlGenerator in class DdlGenerator cannot be applied to given types;
[error] ddl = new DdlGenerator((SpiEbeanServer) server, new MySqlPlatform(), config);
[error] ^
[error] required: no arguments
[error] found: SpiEbeanServer,MySqlPlatform,ServerConfig
[error] reason: actual and formal argument lists differ in length
[error] 1 error
[error] (test:compile) javac returned nonzero exit code
[error] Total time: 2 s, completed 2013-12-17 00:21:23
Run Code Online (Sandbox Code Playgroud)
有没有DdlGenerator改变?