我有一个控制器类,其中有一个命令对象。我有一个方法find()使用此命令对象,如下所示:
class itemController{
//command object
class SearchCommand{
String email
static constraints={
email blank:false,email:true
}
def find = {SearchCommand sc ->
if(!sc.hasErrors()){
----- do something---
}
}
现在,我正在编写一个测试用例来测试控制器中的find方法。但是测试用例失败了
if(!sc.hasErrors())
因为sc仍然是'null'。我不知道如何在测试用例中处理这个内部类命令对象。 我到目前为止写的测试用例是:
class itemControllerTests extends ControllerUnitTestCase {
void testFind(){
def model = controller.find()
assertNotNull(model)
}
}
如何在测试用例中处理内部类Command对象。我嘲笑它吗?我尝试过使用mockCommandObject(?),但不确定如何将内部类命令对象传递给它?
答案 0 :(得分:1)
您可以使用mockCommandObject
class RioController {
class UserCommand{
String email
static constraints = {
email blank: false, email: true
}
}
def load={UserCommand cmd ->
if(cmd.validate()){
flash.message = "Ok"
}
else{
flash.message = "Where is the email?"
}
}
}
import grails.test.mixin.*
import org.junit.*
@TestFor(RioController)
class RioControllerTests {
@Test
void testLoad(){
mockCommandObject RioController.UserCommand
controller.load()
assert flash.message == "Where is the email?"
params.email = "verynew@email.com"
controller.load()
assert flash.message == "Ok"
}
}