2012-02-18 8 views
5

नीचे वह व्यवहार है जो मैं चाहता हूं। मुझे dontIgnoreMe() विधि को सीधे बुलाए जाने वाले अनदेखी विधि के बजाय मांग विधि को कॉल करने के लिए ग्रोवी MockFor ignore method चाहिए।मैं एक मांग विधि का उपयोग करने के लिए एक groovy MockFor/StubFor अनदेखा विधि कैसे प्राप्त करूं

अनिवार्य रूप से, मैं dontIgnoreMe() मुझे एक नकली के साथ प्रतिस्थापित करना चाहता हूं, और ignoreMe() नकली कॉल करें (जो मैंने मेटा क्लास के साथ किया है) ऐसा लगता है कि श्रेणियां बेहतर समाधान हो सकती हैं। मुझे लगता है कि अगले सप्ताह पर ध्यान देंगे, देखें: groovy nabble feed

import groovy.mock.interceptor.MockFor 

class Ignorable { 
    def dontIgnoreMe() { 'baz' } 
    def ignoreMe() { dontIgnoreMe() } 
} 

def mock = new MockFor(Ignorable) 
mock.ignore('ignoreMe') 
mock.demand.dontIgnoreMe { 'hey' } 

mock.use { 
    def p = new Ignorable() 
    assert p.dontIgnoreMe() == 'hey' 
    assert p.ignoreMe() == 'hey' 
} 

Assertion failed: 

assert p.ignoreMe() == 'hey' 
     | |   | 
     | baz  false 
     [email protected] 

उत्तर

1

ग्रूवी डेवलपर्स मैं दृढ़ता से स्पॉक फ्रेमवर्क सलाह देते हैं!

नीचे कोड में की तरह उपयोग Spy:

def "Testing spy on real object with spock"() { 
    given: 
    Ignorable ignorable = Spy(Ignorable) 
    when: 
    ignorable.dontIgnoreMe() >> { 'hey' } 
    then: 
    ignorable.ignoreMe() == 'hey' 
    ignorable.dontIgnoreMe() == 'hey' 
} 
संबंधित मुद्दे