क्या यह सच है कि मॉकिटो उन वस्तुओं को नकल नहीं कर सकता जो पहले से ही CGLIB द्वारा बढ़ाए गए थे?मैकिंग CGLIB उन्नत ऑब्जेक्ट्स
public class Article {
@Autowired
private dbRequestHandler
@Autowired
private filesystemRequestHandler
@Transactional
public ArticleDTO getArticleContents() {
//extractText() and then save the data in DTO
//extractImages() and then save the data in DTO
// some other calls to other databases to save data in dto
return articleDTO;
}
public void extractText() {
//call to DB
}
public void extractImages() {
// call to file system
}
}
public class IntegrationTest {
@Autowired
private Article article;
//setup method {
articleMock = Mockito.spy(article);
doNothing().when(articleMock).extractImages();
}
}
ऊपर के उदाहरण में जब यह doNothing().when(articleMock).extractImages();
की बात आती है यह वास्तव में असली समारोह कहता है। एक नजदीक देखो लेख पर दो बार बढ़ाया जाता है। autowiring
का एक कारण और spying
का दूसरा कारण।
यदि मैं उन्नत वस्तुओं पर जासूसी नहीं कर सकता, तो मैं अपने इंटीग्रेशन टेस्ट में getArticle()
विधि का परीक्षण कैसे कर सकता हूं, ताकि मैं एक उचित डीटीओ वापस लौटा सकूं।
नोट: मैं वास्तव में उस विधि का परीक्षण नहीं करना चाहता जो फाइल सिस्टम कॉल करता है। बस डीबी वाले। यही कारण है कि मुझे getArticle
विधि का परीक्षण करने की आवश्यकता है।
जो मैंने पाया [दस्तावेज] (http://docs.mockito.googlecode.com/hg/latest/org/mockito/Mockito.html#doNothing()) मैं अनुचित रूप से समस्या को नहीं देखता। क्या आपने इसे 'अनुच्छेद' स्वयं बनाकर कोशिश की है, और इसे स्वचालित नहीं किया गया है (या कम से कम स्वचालन के बाद शुद्धता को सत्यापित किया गया है)? – atomman
हाँ यदि मैं स्वयं 'आलेख' बना देता हूं, तो मैं जासूसी करने में सक्षम हूं। लेकिन मुझे इसे स्वचालित करना है, क्योंकि मेरे आवेदन में प्रत्येक ऑब्जेक्ट ऑटोवॉयरिंग द्वारा बनाया गया है, और यदि मैं अपने द्वारा 'आलेख' शुरू करता हूं तो अनुच्छेद वर्ग में फ़ील्ड शून्य है (उदाहरण के लिए reqHandler ऑब्जेक्ट्स)। यदि मैं उन क्षेत्रों को भी शुरू करता हूं तो उन वर्गों के क्षेत्र शून्य हैं और श्रृंखला चालू होती है .. – samach
फ़िल्टर कोड और आपका प्रश्न फिट नहीं है - 'getArticle() 'प्रश्न में,' getArticleContents()' कोड में - यह कुछ भ्रम पैदा कर रहा है। आपको कुछ और 'एकीकरण टेस्ट' कोड प्रदान करने पर विचार करना चाहिए। – Cebence