我有以下几行代码
username = username.stripIndent()
user = User."${databaseInstance}".findByUsername(username)
if (user == null){
return "User does not exist"
}
我正在尝试通过以下方式对该功能进行单元测试:
def setup() {
def mockUser = Mock(User)
myClass.user = mockUser
}
void "userNotFoundGetUserInfo"(){
given:
myClass.databaseInstance = 'X'
_ * mockUser._ >> null
when:
def result = myClass.getUserInfo(username)
then:
result == "User does not exist"
}
但我不断收到错误消息“没有此类属性:类mypackage.User为X”
我意识到这是因为我在 mock “用户”对象而不是“用户”类,所以如何解决我的代码直接调用域类的事实?
最佳答案
使用Grails内置的@Mock
注释代替Spock的Mock()
方法。像这样:
@Mock(User)
class YourTestSpecification extends Specification {
def setup() {
myClass.user = new User()
}
}
@Mock
旨在模拟Grails域类。
关于unit-testing - 如何在单元测试中避免使用Grails/Spock进行域调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25775980/