gpt4 book ai didi

grails - 对象未保存在Spock集成测试中

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

我有一个 token 实体:

class Token {
/**
* Constants for various namespaces
*/
public static final String NS_PASSWORD_RESET = "pass-reset";

/**
* A simple string unlimited in content that defines a scope of the token
*/
String namespace

/**
* This fields holds an identifier for anything specific that the process might need
*/
Long identifier

/**
* The actual token itself
*/
String token

Timestamp dateCreated
Timestamp lastUpdated
Timestamp expiration

static mapping = {
autoTimestamp true
}

static constraints = {
}
}

和具有以下方法的服务类:
def creareNewToken(String ns, int timeout) {
def token = new Token()

token.setNamespace(ns)
token.setToken(this.generateToken(15))

//persist the object
token.save(flush: true)

return token
}

我为服务类创建了一个集成测试:
class TokenServiceIntegrationSpec extends IntegrationSpec {

TokenService tokenService

def "test creareNewToken"() {
when:
def token = tokenService.creareNewToken(Token.NS_PASSWORD_RESET, 60)

then:
token instanceof Token
token.getNamespace() == Token.NS_PASSWORD_RESET
token.getToken().length() == 15
token.getDateCreated() == ''
}
}

执行测试时,我得到:
Failure:  test
creareNewToken(com.iibs.security.TokenServiceIntegrationSpec)
| Condition not satisfied:
token.getDateCreated() == ''
| | |
| null false
com.iibs.security.Token : (unsaved)
at com.iibs.security.TokenServiceIntegrationSpec.test creareNewToken(TokenServiceIntegrationSpec.groovy:31)

这个问题可能是什么原因?似乎该对象实际上并未保存,并且,从总体上讲,也未填充 dateCreated 。我的问题是为什么它不保存?我还有许多其他构建方式相似的测试,它们可以正常工作。

感谢您的任何建议。

最佳答案

您没有设置两个字段(标识符和到期时间)。默认情况下,每个字段都不为空。尝试添加:

assert token.save(...)

检查您的对象是否真正被保存。

如果希望他们接受null作为值,则需要在约束中指定它
static constraints = { 
identifier nullable: true
expiration nullable: true
}

关于grails - 对象未保存在Spock集成测试中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31711752/

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