这是为游戏准备的! 框架 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 , [email protected] , 12345678 , 0, 0, true);
在应用程序中. conf
db.default.driver=org.postgresql.Driver
db.default.url="postgres://user:password@localhost:5432/ME"
在建设中.scala
val appDependencies = Seq(
// Add your project dependencies here,
"postgresql" % "postgresql" % "9.1-901-1.jdbc4"
)
测试代码
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 protected]") must beEqualTo(1)
User_data.create("user2", "password2", "[email protected]") must beEqualTo(2)
User_data.create("user1", "password3", "[email protected]") 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 protected]")
user.get.password must beEqualTo("password1")
user.get.edits must beEqualTo(0)
user.get.reports must beEqualTo(0)
user.get.active must beTrue
}
}
}
}
此代码会以书面方式通过, 但无论如何它应该通过 。 如果我在运行区内卸载第一个测试插件, 测试我的发现All() 函数的长度为 1, 它会立即失败 。 但是, 如果我将它修改为在机器上使用一个持续存在的 PostgreSQL DB, 它仍然会立即失败, 但是当我查看 PostgreSQL DB 时, 我的用户数据表格有它所应用的单一进化, 并且播放- 演进表有我进化的条目, 并标记为状态 = “ 应用” 和最后一个问题 =“ ” 。
任何帮助都会感激不尽,谢谢。
(P.S.,我是第一张海报,但将尽我最大的努力尽快接受那些愿意提供帮助的人的答复)