स्पॉक में जावा स्प्रिंग लोगों परीक्षण के लिए:
constructorArgs जाना है, लेकिन निर्माता इंजेक्शन का उपयोग तरीका है। जासूस() आपको सीधे ऑटोवायर फ़ील्ड सेट करने नहीं देगा।
// **Java Spring**
class A {
private ARepository aRepository;
@Autowire
public A(aRepository aRepository){
this.aRepository = aRepository;
}
public String getOne(String id) {
tryStubMe(id) // STUBBED. WILL RETURN "XXX"
...
}
public String tryStubMe(String id) {
return aRepository.findOne(id)
}
public void tryStubVoid(String id) {
aRepository.findOne(id)
}
}
// **Groovy Spock**
class ATest extends Specification {
def 'lets stub that sucker' {
setup:
ARepository aRepository = Mock()
A a = Spy(A, constructorArgs: [aRepository])
when:
a.getOne()
then:
// Stub tryStubMe() on a spy
// Make it return "XXX"
// Verify it was called once
1 * a.tryStubMe("1") >> "XXX"
}
}
स्पॉक - छोटा करते जासूस पर शून्य विधि आपत्ति
// **Groovy Spock**
class ATest extends Specification {
def 'lets stub that sucker' {
setup:
ARepository aRepository = Mock()
A a = Spy(A, constructorArgs: [aRepository]) {
1 * tryStubVoid(_) >> {}
}
when:
...
then:
...
}
}
धन्यवाद बहुत बहुत - मैं सिर्फ इस पर दोबारा गौर किया है और डिजाइन के बारे में बहुत कुछ सीखा है के बाद से मैं सवाल पूछा था। अब मैं आपसे सहमत हूं कि बेहतर डिज़ाइन एक थोक मैसेज प्रोसेसिंग सेवा और एक व्यक्तिगत मैसेज प्रोसेसिंग सेवा होगी। इसलिए एक नकली के साथ परीक्षण छोटा है। – John