शीर्षक बहुत अधिक कहता है। मैं एक नियंत्रक की निर्भरता का नकल करने और कार्यों के खिलाफ परीक्षण चलाने के लिए एक पारंपरिक जुनीट परीक्षण स्थापित करना चाहता हूं।यूनिट का उपयोग कर प्ले नियंत्रक का परीक्षण करने वाला यूनिट
मैंने पाया कि मैं इस तरह मेरे लक्ष्य को प्राप्त कर सकते हैं:
public class AccountsControllerTest {
private controllers.Accounts accountsController;
@Test
public void test() {
running(fakeApplication(), new Runnable() {
public void run() {
accountsController = new controllers.Accounts();
accountsController.setAccountsWorkflow(mock(workflow.Accounts.class));
}
});
}
}
स्पष्ट समस्या यहाँ है कि मैं परीक्षण के अंतर्गत मेरी कक्षा instantiating रहा हूँ और परीक्षा पद्धति ही है, से नकली निर्भरता इंजेक्शन है जब मैं setup()
विधि में ऐसा करना चाहिए। ऐसा लगता है कि setup()
विधि बेकार है अगर मैं पारंपरिक रूप से अपने नियंत्रक का परीक्षण करने जा रहा हूं।
बेशक मैं नियंत्रकों the way Play recommends का परीक्षण कर सकता हूं, लेकिन मेरा आवेदन बाहरी एसओएपी वेब सेवा पर निर्भर है, इसलिए मुझे यह दिखाने के लिए यूनिट परीक्षण की आवश्यकता है कि हमारा सर्वर काम कर रहा है जब हमारा सर्वर काम कर रहा है।
तो, setup()
और teardown()
विधियों का लाभ उठाते हुए, मैक का उपयोग करके एक प्ले नियंत्रक को यूनिट का परीक्षण करने का सबसे अच्छा तरीका क्या है?
संपादित
मुझे पता है मैं कुछ ज्ञान यहां संभालने रही है, इसलिए के लिए जो लोग अनजान हैं, एक इकाई परीक्षण में नियंत्रक इन्स्टेन्शियशन एक running()
समारोह में लिपटे किया जाना चाहिए या खेलने के लिए! रनटाइम अपवाद फेंक देगा कि कोई आवेदन शुरू नहीं हुआ है।
http://www.joergviola.de/blog/2012/06/04/page-driven-functional-tests-for-play-2-dot-0/ परीक्षण के लिए एक अच्छा तरीका भी है, लेकिन अभी भी नकली समस्या है। आप नकली आवेदन के बिना परीक्षण चलाने की कोशिश कर सकते हैं। Http://stackoverflow.com/questions/10381354/how-to-manipulate- सत्र-request-and-response-for-test-in-play2-0 – niels
http://stackoverflow.com/a/10114621/89509 देखें उदाहरण के लिए –
धन्यवाद। आप 'चल रहे 'फ़ंक्शन के बाहर नियंत्रक को तुरंत चालू करने में सक्षम कैसे थे? यह बाधा मुझे जुनीट की 'सेटअप' पद्धति का लाभ उठाने से रोकती है, इसलिए मुझे हर टेस्ट विधि पर मोज़े लगाने की ज़रूरत नहीं है। आपका उदाहरण वास्तव में इसका प्रदर्शन नहीं करता है। – Samo