2
我有一個方法,在自定義標籤庫,像這樣:成株自定義標籤庫方法在控制器單元測試
def deleteAction = {attrs ->
def id = attrs['id']
def type = attrs['type']
def clazz = attrs['class']
def html = new MarkupBuilder(out)
html.span(class: "${clazz} ui-icon ui-icon-trash {id:'${id}'}")
}
我有一個使用這個方法,我試圖存根出來的單元測試控制器,所以我有以下幾點:
def mockMyTagLib = mockFor(MyTagLib)
mockMyTagLib.demand.deleteAction(1) {id, type, clazz ->
def html = new MarkupBuilder(new StringWriter())
html.span(class: "${clazz} ui-icon ui-icon-trash {id:'${id}'}")
}
controller.metaClass.mn = mockMyTagLib.createMock()
但我不斷收到如下:
沒有更多的呼叫 'deleteAction'預計在這一點上是。要求完成 。
我在這裏做錯了什麼?下面是它在控制器實際使用:
"${mn.deleteAction(id: it.id, type: 'bookProduct', 'class': 'del-book-product')}"
Grails的告訴我,它無法找到的財產,以鬆當我定義mockFor(Class,loose = false)時,「寬鬆」。但是,我修改了我的需求,直到我使用範圍1..3工作。 (爲什麼需要它3次我仍然需要弄清楚)。所以我已經過去了,但得到了一個新的錯誤。我懷疑這與此無關,所以我相信你已經解決了我的問題。我會讓它工作100%,如果它確實不是一個相關的問題,你會得到賞金,我會將其標記爲答案。 – Gregg 2011-04-18 05:17:10
祝你好運!我希望你能解決你的新問題。奇怪的是,鬆散不適合你。應該只是mockFor(MyClass,false)這裏的Javadocs:http://grails.org/doc/latest/api/grails/test/GrailsUnitTestCase.html – 2011-04-18 06:17:58