我正在为我的服务编写测试(使用 Grails 2.0.4/Spock/Build-Test-Data 插件),这些服务使用其中包含序列的域对象。挑战在于该序列在单元测试中不起作用,所以我想知道如何解决这个问题?
示例:域对象
class Transaction {
Long transactionId // unique auto generated transaction id
// .. code omitted
static mapping = {
// sequence generator for handing out unique transaction id's
transactionId generator:'sequence', params:[initial_value: 50, sequence:'seq_transaction_id']
}
}
示例:测试
@Build(Transaction)
@TestFor(Transaction)
class TransactionSpec extends Specification {
def "simple test"() {
when:
Transaction transaction = Transaction.build()
transaction.save()
then:
true
}
}
测试将简单地失败,因为域对象内的 transactionId 可能不可为空。域类中的序列没有按预期工作并返回 null。我错过了什么吗?或者有没有其他方法可以让序列在单元测试中按预期工作?
提前致谢。