所以,Play中的测试让我很头疼,我希望那里有人能解决我的问题。
我需要测试我的注册系统(以及许多其他内容),这当然涉及代表用户提交表单。
我的精简版控制器动作 - 添加()
public static Result add() {
String email = form().bindFromRequest().get("email");
String name = form().bindFromRequest().get("name");
String password = form().bindFromRequest().get("password");
String password_confirm = form().bindFromRequest().get("password-confirm");
[stripped out code]
if(!check){
flash("error", "Not a valid email, please use the email address provided by your employer");
return redirect(
routes.UserController.registration()
);
}
else {
String passwordHash = BCrypt.hashpw(form().bindFromRequest().get("password"), BCrypt.gensalt());
// Create unverified User
User newUser = User.create(
form().bindFromRequest().get("email"),
form().bindFromRequest().get("name"),
passwordHash
);
// Generate verification key
String key = newUser.verification_key;
// Send verification email
sendVerificationLink(key);
flash("success", "Thanks for registering! We have sent you an email with a verification link.");
return redirect(
routes.Application.login()
);
}
这是我写的JUnit测试。
@Test
public void registerTest() {
running(fakeApplication(), new Runnable() {
public void run() {
String registeredUserName = "bob";
String registeredUserEmail = "bob@gmail.ac.uk";
String registeredUserPass = "secret";
String registeredUserPassConfirm = "secret";
Map<String, String> userData = new HashMap<String, String>();
userData.put("name", registeredUserName);
userData.put("email", registeredUserEmail);
userData.put("password", registeredUserPass);
userData.put("passwordconfirm", registeredUserPassConfirm);
Result r = callAction(routes.ref.UserController.add(), fakeRequest()
.withFormUrlEncodedBody(Form.form(User.class).bind(userData).data()));
assertEquals(r, 200);
}
});
}
在HashMap中给出适当的正确细节,在我看来,r应该返回OK还是200?
但是,我得到以下内容......“预计:play.test.Helpers $ 1 @ 29cd761a但是:&lt; 200&gt;”
这是什么“play.test.Helpers$1@29cd761a”?它看起来像引用一个对象或内存地址,但我不知道为什么??
如果这个含糊不清,请说明一下,我会详细说明。
提前致谢
答案 0 :(得分:1)
哟!
怀疑它!
对于其他任何有瞬间脑屁的人......使用status()方法来阅读返回的结果!
Result r = callAction(routes.ref.UserController.add(), fakeRequest()
.withFormUrlEncodedBody(Form.form(User.class).bind(userData).data()));
assertEquals(200, status(r));