【发布时间】:2014-05-14 20:51:18
【问题描述】:
我很新玩,但或多或少有经验的 Java 开发人员。(这就是为什么我搜索一些 Java 的 MVC 框架,而不是 rails/cake/django) 总之……
我的问题是:是否可以在 unitTest 中测试模型验证(带注释的验证标准)? 这不是关于测试 CORE 中的验证是否正常工作,而是关于测试我是否搞砸了注释:-p 经过一段时间的谷歌搜索和阅读后,我知道验证是表单 api 的一部分。所以我试图在我的单元测试中设置一个表单。但这不起作用,
这是代码
package models;
import static org.junit.Assert.*;
import static play.test.Helpers.fakeApplication;
import static play.test.Helpers.inMemoryDatabase;
import static play.test.Helpers.start;
import static play.test.Helpers.stop;
import java.util.HashMap;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import play.data.Form;
import play.test.FakeApplication;
public class UserTests {
private FakeApplication fakeApplication;
@Before
public void startup() {
fakeApplication = fakeApplication(inMemoryDatabase());
start(fakeApplication);
}
@Test
public void testCreateUserWorks(){
String name = "asf";
HashMap<String,String> values = new HashMap<String,String>();
values.put("username", name);
Form<User> userForm = Form.form(User.class);
userForm = userForm.bind(values);
System.out.println(userForm.toString());
System.out.println(userForm.data());
User tmp = userForm.get();
System.out.println("muh4");
User testUser = User.find.where().eq("username", name).findUnique();
assertNotNull(testUser);
System.out.println(testUser.getEmail());
assertEquals(name, testUser.username);
assertEquals(name+"@xxx.xxx",testUser.getEmail());
}
@After
public void tearDown(){
stop(fakeApplication);
}
}
但是当到达 userForm.get() 时它只是失败了 测试 models.UserTests.testCreateUserWorks 失败:java.lang.IllegalStateException:没有值
userForm.toString() 这么说 Form(of=class models.User, data={username=asf}, value=None, errors={})
我知道我是新手,但我不知道该尝试什么。也许是Spring Databinding不在实际应用中时未初始化?!
提前谢谢你 时光荏苒
这是我的模型代码
@Entity
public class User extends Model {
@Id
@Constraints.MinLength(1)
String username;
@Transient String email;
public List<ValidationError> validate(){
List<ValidationError> errors = new ArrayList<ValidationError>();
return errors;
}
public static Finder<String, User> find = new Finder<String, User>(String.class, User.class);
public String getEmail(){
return this.username + "@xxx.xxx";
}
}
【问题讨论】:
标签: playframework playframework-2.0 playframework-2.2