Grails 如何使用spock框架编写集成测试用例
我正在使用Grails-2.4.4。我需要简单的步骤来使用Grails中的spock编写集成测试用例 我创建了一个示例应用程序,因为我只是在数据库中持久化一条记录。我想为此编写集成测试用例Grails 如何使用spock框架编写集成测试用例,grails,spock,Grails,Spock,我正在使用Grails-2.4.4。我需要简单的步骤来使用Grails中的spock编写集成测试用例 我创建了一个示例应用程序,因为我只是在数据库中持久化一条记录。我想为此编写集成测试用例 有人能帮我吗。我同意@quindimildev的观点,即一旦给出一个示例域类,提供有用的信息会更容易,特别是如果有特定的东西需要测试的话。在那之前,我知道即使只是看到测试的开始也是有帮助的,所以这里有一个这样的例子: 假设有一个作者域类 class Author { Integer id St
有人能帮我吗。我同意@quindimildev的观点,即一旦给出一个示例域类,提供有用的信息会更容易,特别是如果有特定的东西需要测试的话。在那之前,我知道即使只是看到测试的开始也是有帮助的,所以这里有一个这样的例子: 假设有一个
作者
域类
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
域类,但也可以是控制器集成测试的控制器
@Mock(Author)
指示应该模拟哪个域类,以及哪个域类可以应用Gorm方法。如果您要为此测试模拟多个域对象,那么它也可以是一个数组。例如:@Mock([Author,Book])
.save(flush:true,failOnError:true)
适用于假持久化条目flush:true
将确保立即保存条目并可用于测试failOnError:true
如果保存操作不正常,则测试将失败。如果您错过了一个约束,这将非常有用,如果没有这个约束,它将在稍后失败,并显示一条更加隐晦的消息
Author.count()==1
您可以看到,保存后,您可以立即使用Gormcount()
查询它
注意:
IntegrationSpec
类在Grails3中不再可用。相反,该类应该扩展规范
(就像单元测试一样),并包含@Integration
注释。请在这里编写您的类代码,为您创建自定义测试。他使用Grails 2.4,所以他的集成测试必须扩展IntegrationSpec@loteq我添加了这条评论,以防有人稍后来看这个问题,因为对于一些人来说,从Grails2到Grails3的转换可能不是一个重大的改革。