当前位置: 首页 > 知识库问答 >
问题:

Grails控制器单元测试通过命令行而不是Intellij

郑星辰
2023-03-14

我正在使用Grails 2.3.8,最近我开始修复一些过时的测试,这些测试在过去的两个Grails 2.3版本中停止工作。x版本。

在Spock控制器测试期间,以及使用Controller中的域实例进行响应时,根据测试执行环境,针对Model的断言会失败/通过。具体来说,当使用Grails控制台vs IntelliJ(JUnit)执行测试时,模型上的域实例具有不同的属性名称。

我在我的Spock规范中的then或expect块中做了这种断言,以此来对冲风险:

void "show action correctly handles a valid instance"() {

    given: "a valid domain instance"

        def myDomainObject = MyDomainClass.build()

    when: "calling the show action with a valid domain instance"

        controller.show(myDomainObject)

    then: "respond to the show view with the domain instance set on the model"

        view == ‘show’
        // the property name ends with ‘Instance’ in one env and not in the other                        
        model.myDomainObjectInstance ?: model.myDomainObject == myDomainObject
}

共有1个答案

郤望
2023-03-14

不确定这是否是个问题,但我认为您应该将控制器的响应保存在一个变量中,并使用renderArgs变量访问视图:

void“show action正确处理有效实例”(){

given: "a valid domain instance"

    def myDomainObject = MyDomainClass.build()

when: "calling the show action with a valid domain instance"

    def model = controller.show(myDomainObject)

then: "respond to the show view with the domain instance set on the model"

    renderArgs.view == ‘show’
    // the property name ends with ‘Instance’ in one env and not in the other                        
    model.myDomainObjectInstance ?: model.myDomainObject == myDomainObject

}

不确定这是否是问题所在。

 类似资料:
  • 问题内容: 在kohana框架中,我可以使用以下命令通过命令行调用控制器 是否可以通过CLI在Laravel 5中调用我想要的控制器?如果是,该怎么做? 问题答案: 到目前为止,还没有办法(不确定是否会发生)。但是,您可以创建自己的Artisan Command 来执行此操作。使用以下命令创建命令: 对于Laravel 5.3或更高版本,您需要使用: 这将在中生成命令类。该类的内容应如下所示: 然

  • 问题内容: 在Vojta Jina的优秀存储库中,他在其中演示了指令的测试,他在模块包装器之外定义了指令控制器。看到这里:https : //github.com/vojtajina/ng- directive-testing/blob/master/js/tabs.js 这不是不好的做法并且会污染全局名称空间吗? 如果在另一个地方可以合理地调用TabsController,那会不会很麻烦? 可以

  • 本文向大家介绍AngularJS 单元测试控制器,包括了AngularJS 单元测试控制器的使用技巧和注意事项,需要的朋友参考一下 示例 控制器代码: 考试: 跑!

  • 问题内容: 在我们的团队中,我们定义了大多数测试用例,如下所示: 一门“框架”课: 还有很多测试用例,例如testMyCase.py: 当我编写新的测试代码并希望经常运行它并节省时间时,我要做的是在所有其他测试之前放置“ __”。但这很麻烦,使我从正在编写的代码中分散了注意力,并且由此产生的提交噪音实在令人讨厌。 因此,例如,当对进行更改时,我希望能够做到这一点: 并运行 只 我该如何实现? 我尝

  • 在我们的团队中,我们这样定义大多数测试用例: 一个“框架”类: 我试图重写部分,但是由于我是Python新手,我感到迷路了,除了方法之外,我一直在研究其他的东西。

  • 本文向大家介绍Spring Boot Rest控制器单元测试过程解析,包括了Spring Boot Rest控制器单元测试过程解析的使用技巧和注意事项,需要的朋友参考一下 Spring Boot提供了一种为Rest Controller文件编写单元测试的简便方法。在SpringJUnit4ClassRunner和MockMvc的帮助下,可以创建一个Web应用程序上下文来为Rest Controll