gpt4 book ai didi

grails - 如何模拟 Controller 内部的命令对象

转载 作者:行者123 更新时间:2023-12-02 14:08:31 25 4
gpt4 key购买 nike

我有一个 Controller 类,在其中有一个命令对象。我有一个方法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---
}

}

现在,我正在编写一个测试用例,以测试 Controller 中的find方法。但是测试用例在
  if(!sc.hasErrors())

因为sc仍然为“null”。我不确定如何在测试用例中处理此内部类命令对象。
到目前为止,我编写的测试用例是:
class itemControllerTests extends ControllerUnitTestCase {

void testFind(){
def model = controller.find()
assertNotNull(model)
}
}

如何在测试用例中处理内部类Command Object。我会 mock 吗?我试过使用模拟命令对象(?),但不确定如何将内部类命令对象传递给它?

最佳答案

您可以使用模拟命令对象

类RioController

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?"
}
}
}

类RioControllerTests
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"
}
}

关于grails - 如何模拟 Controller 内部的命令对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12112415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com