问题很奇怪,因为几乎相同的操作会返回正确的模型,不同之处在于我不是在渲染模板而是在查看视图。
首先执行 controller (控制器)操作
:您可以看到,呈现的模型在这里
def saveAjax(Author authorInstance){
if(!authorInstance.validate()){
respond view: 'index', authorInstance.errors
} else {
def author = new Author(username: authorInstance.username)
authorService.save(author)
render(template: 'author_row', model:[author:author]) //<--here the model is correct
}
}
如果我将“ 模板”与“ 视图”交换,则测试通过了
服务:
Author save(Author author) {
return author?.save(flush: true)
}
测试本身:
void "Test the saveAjax action"() {
when:"you do not have the correct params"
controller.saveAjax(new Author())
then:"expect to be redirected to index"
view == 'index'
when:"you have the correct params"
response.reset()
controller.saveAjax(new Author(username: "Alice"))
then:"expect to have model author"
model.author //<-- here I get author = null
}
错误:
Condition not satisfied:
model.author
| |
| null
[authorInstance:daily.journal.Author : (unsaved)]
我知道您可以检查呈现的模板的内容,但我明确针对该模型。有测试的机会吗?
答案 0 :(得分:0)
事实证明,我遇到了Grails的约定超越配置事情。尽管该模型被命名为author,但是只能作为author Instance 进行测试。所以我将其更改为:
then:"expect to have model author"
model.authorInstance
在规范中并... 通过。如果有人可以向我解释原因,我仍然很高兴。
答案 1 :(得分:0)
因为您的作者尚未通过验证。如您在此处看到的:PCLStorage
。
由于验证错误而未保存,您可以将服务更新为
authorInstance:daily.journal.Author : (unsaved)
接收验证异常,或者您可以打印测试中的错误。