Wil*_*ton 6 testing scala playframework specs2 playframework-2.0
这是为了玩!框架2.0.
我正在尝试编写一个简单的测试用例,以确保我的用户模型正常运行并在我的数据库中保存数据.如果可能的话,我想在内存中运行它,这样我就可以在每次新的运行中重新开始.
我遇到的问题是我的演变运行(表格已创建,数据已插入,但我不能将其视为存在).首先,我的代码.
CREATE TABLE user_data (
id SERIAL PRIMARY KEY,
user_name varchar(256) UNIQUE NOT NULL,
email varchar(256) NOT NULL,
password varchar(256) NOT NULL,
edits int NOT NULL,
reports int NOT NULL,
active BOOLEAN NOT NULL);
INSERT INTO user_data(user_name, email, password, edits, reports, active) VALUES ('user1', 'user1@email.com', '12345678', 0, 0, true);
Run Code Online (Sandbox Code Playgroud)
在application.conf中
db.default.driver=org.postgresql.Driver
db.default.url="postgres://user:password@localhost:5432/ME"
Run Code Online (Sandbox Code Playgroud)
在build.scala中
val appDependencies = Seq(
// Add your project dependencies here,
"postgresql" % "postgresql" % "9.1-901-1.jdbc4"
)
Run Code Online (Sandbox Code Playgroud)
测试代码
class User_dataSpec extends Specification {
"The Database" should {
"persist data properly" in {
running(FakeApplication(additionalConfiguration = inMemoryDatabase())) {
//User_data.findAll().length must beEqualTo(1)
//Create users
User_data.create("user1", "password1", "email@test1.com") must beEqualTo(1)
User_data.create("user2", "password2", "email@test2.com") must beEqualTo(2)
User_data.create("user1", "password3", "email@test3.com") must beEqualTo(0)
//Count users
User_data.findAll().length must beEqualTo(2)
//Verify users exist
User_data.exists("user1") must beTrue
User_data.exists("user2") must beTrue
//Verify user doesn't exist
User_data.exists("user3") must beFalse
//Find users by ID
User_data.findUser(1).get.user_name must beEqualTo("user1")
User_data.findUser(2).get.user_name must beEqualTo("user2")
//Fail to find users by ID
User_data.findUser(3) must beNone
//Find users by user_name
User_data.findUser("user1").get.user_name must beEqualTo("user1")
User_data.findUser("user2").get.user_name must beEqualTo("user2")
//Fail to find users by user_name
User_data.findUser("user3") must beNone
//Authenticate users
User_data.authenticate("user1", "password1") must beTrue
User_data.authenticate("user2", "password2") must beTrue
//Fail to authenticate users
User_data.authenticate("user1", "password2") must beFalse
User_data.authenticate("user3", "passwordX") must beFalse
//Confirm the user was inserted properly
val user = User_data.findUser("user1")
user.get.user_name must beEqualTo("user1")
user.get.email must beEqualTo("email@test1.com")
user.get.password must beEqualTo("password1")
user.get.edits must beEqualTo(0)
user.get.reports must beEqualTo(0)
user.get.active must beTrue
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
此代码将按写入方式传递,但不应该.如果我取消注释运行块中的第一个测试用例以测试我的findAll()函数应该是1的长度,它将立即失败.但是,如果我将其更改为在我的机器上使用持久化的PostgreSQL数据库,它仍然会立即失败,但是当我查看PostgreSQL数据库时,我的user_data表中插入了单个进化插入,并且play_evolutions表具有该条目为了我的进化而被标记为state ="applied"和last problem ="".
任何帮助将不胜感激,谢谢.
(PS,我是第一次发布海报,但会尽快为那些愿意提供帮助的人尽快接受答复)
* 更新 *
正如 Jakob 所说,演进失败的原因可能是为 MySQL 编写的 SQL 与 H2DB 不兼容。您可以按照原始答案使用单独的 MySQL 进行测试来解决此问题,或者将 H2DB 置于 MySQL 兼容模式,这可能会解决问题(请参阅Play!2 for Scala 中的 Fixtures)。
| 归档时间: |
|
| 查看次数: |
3703 次 |
| 最近记录: |