gpt4 book ai didi

unit-testing - Grails Spock单元测试的重定向和渲染

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

我有以下功能要进行单元测试。但是我坚持如何进行准确的测试。还需要对这些功能进行单元测试吗?我正在使用Grails 2.5.1和Spock 0.7。请提出建议。

    def allGeneralNotes() {
def ben = Beneficiary.findById(params.id)
if(!ben){
redirect(controller: 'dashboard',action: 'index')
}

def generalNotes = Note.findAllByBeneficiaryAndTypeAndIsDeleted(Beneficiary.findById(params.id), NoteType.GENERAL,false).sort { it.dateCreated }.reverse()
def userNames = noteService.getUserName(generalNotes);
render view: 'generalNotes', model: [id: params.id, generalNotes: generalNotes, userNames:userNames]
}

最佳答案

我不得不假设许多方面的名称,但希望以下内容可以使您朝正确的方向前进。
需要注意的一件事是,您在 Controller 方法中两次调用了Beneficiary.findById(params.id),您可以将ben传递给findAllByBeneficiaryAndTypeAndIsDeleted

您可能还必须向下面的模拟方法返回的新对象添加参数。

@TestFor( BeneficiaryController )
@Mock( [ Beneficiary, Note ] )
class BeneficiaryControllerSpec extends Specification {

def noteService = Mock( NoteService )

void setup() {
controller.noteService = noteService
}

void "test allGeneralNotes no beneficiary" () {
when:
controller.allGeneralNotes()
then:
response.redirectedUrl == '/dashboard/index'
}

void "test allGeneralNotes beneficiary found" () {
given:
Beneficiary.metaClass.static.findById{ a -> new Beneficiary()}
Note.findAllByBeneficiaryAndTypeAndIsDeleted = { a, b -> [new Note(dateCreated: new Date()), new Note(dateCreated: new Date())]}
when:
controller.allGeneralNotes()
then:
1 * noteService.getUserName( _ ) >> 'whatever username is'
view == '/generalNotes'
}
}

关于unit-testing - Grails Spock单元测试的重定向和渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46886076/

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