gpt4 book ai didi

grails - 如何使用Spock框架编写集成测试用例

转载 作者:行者123 更新时间:2023-12-02 15:05:29 24 4
gpt4 key购买 nike

我正在使用Grails-2.4.4。我需要简单的步骤来使用Grails中的Spock编写集成测试用例。

我创建了一个示例应用程序,因为我只是将记录保留在数据库中。我想为此编写集成测试用例。

谁能帮我吗。

最佳答案

我同意@quindimildev的观点,一旦给出了示例Domain类,将更容易提供有用的信息-特别是如果要测试的特定事物。在此之前,我知道即使只是查看测试的开始也是有帮助的,因此这里是一个这样的示例:

假设有一个Author域类

class Author {
Integer id
String screenName

static constraints = {
}

static mapping = {
cache usage: 'read-only' // No writes to the database
table 'exp_members'
id column: 'member_id'
screenName column: 'screen_name'
version false // Prevent a version column from being added to the database table
}
}

然后,您可以进行如下所示的集成测试:
@TestFor(Author)
@Mock([Author])
class AuthorSpec extends Specification {

void "test"() {
when:
Author author = new Author(
screenName: "Jon Doe",
id: 1
).save(failOnError: true, flush: true)

then:
Author.count() == 1
}
}

以下是有关此测试的一些有用说明:
@TestFor(Author)用于指定要模拟的对象,在这种情况下,它是 Author域类,但它也可以是 Controller 集成测试的 Controller 。
@Mock(Author)指示应该模拟哪个域类,以及哪个域类可以应用Gorm方法。如果您要为此测试模拟多个域对象,它也可以是一个数组。例如: @Mock([Author, Book]) .save(flush: true, failOnError: true)非常适合用于伪造的持久条目。 flush: true将确保条目立即保存并可供您测试。如果保存无法正常运行, failOnError: true将无法通过测试。如果您错过了约束,这将非常有帮助,如果没有约束,它将在以后失败,并带有更隐秘的消息。
Author.count() == 1可以看到,保存后,您可以立即使用Gorm count()进行查询。

注意: IntegrationSpec类在Grails 3中不再可用。相反,该类应扩展 Specification(就像单元测试一样),并包括 @Integration批注。

关于grails - 如何使用Spock框架编写集成测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33686025/

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