[英]Understanding Grails mockFor demand
我正在嘗試為我的過濾器編寫一個單元測試,並且正在努力了解對模擬對象的需求 。 這是一個簡單的失敗測試:
void "test my sanity"() {
setup:
def vendorPayment = mockFor(Payment)
vendorPayment.demand.buyerId { -> 123}
def vp = vendorPayment.createMock()
//vp.buyerId=123
println "buyer id: ${vp.buyerId}"
when:
def a = "testing"
then:
vp.buyerId == 123
}
我想模擬BuyerId的吸氣劑。 使用需求不起作用,但是如果我創建了模擬然后設置了買方ID(帶注釋的行),則測試將通過。 需求不適用於吸氣劑嗎? 是因為吸氣劑是隱式/動態創建的嗎?
方法getBuyerId
必須被getBuyerId
。 Groovy在編譯時為您添加了訪問器方法,因此必須模擬按需方法。 舉一個簡單的例子:
class Payment {
Integer buyerId
}
在編譯后將類轉換為字節碼時,將添加Payment.groovy
Getter / Setter。 相應的測試如下所示:
void "test my power"() {
setup:
def vendorPayment = mockFor(Payment)
vendorPayment.demand.getBuyerId(1..2) { -> 123}
def vp = vendorPayment.createMock()
println "buyer id: ${vp.buyerId}"
expect:
vp.buyerId == 123
//This would fail for < 2.3.* because of this bug which is fixed in 2.4
//http://jira.grails.org/browse/GRAILS-11075
vendorPayment.verify() //null
}
請注意所做的更改:
getBuyerId
方法,而不是字段buyerId
getBuyerId
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.