我正在为一些简单的方法编写单元测试。我遇到的问题是'保存'不适用于我的域对象,即使该域应该被嘲弄。当在域对象上调用验证时,它返回为true。我甚至用try/catch来包围这个对象,以确保它没有抛出任何奇怪的错误,但事实并非如此。以下代码用于调用和测试。Grails mockDomain保存不保存
void test()
{
mockDomain(MyDomain)
Map map1= ["asdf":" "]
Map map2 = ["asdf":123]
InputObject input = new InputObject()
input.setForeignId("1") //not a constraint
input.setMap1(map1)
input.setMap2(map2)
service.methodUnderTest(profile)
List list = MyDomain.getAll()
assertEquals 1, l.size() //FAILS
}
def persistPublishGuids(InputObject input)
{
try{
HashMap map1 = input.map1
for (e in map1)
{
String key= e.getKey()
String value = e.value
long size = input.map2.get(key)
MyDomain domain = new MyDomain (id:guid, field1:value, field2:input.foreignId, field3:size)
domain.save()
}
} catch(ex)
{
ex.printStackTrace()
}
}
它如果这是[sscce](http://sscce.org/),可能会有所帮助。你发布的内容不能单独运行。尝试制作一个最简单的例子,它将执行并重现问题并发布。这样做可能会发现问题的根源,如果不是的话,您将有更清晰的例子供人帮助。 – ig0774
我会,但我知道了。需要运行grails clean,然后在STS中清理/重建项目。我只发现了这一点,因为当我今天早上开始写另一个测试时,它声称我的一个域对象上没有方法“save()”。谷歌搜索导致我清洁和重建解决方案。 – Joseph