2013-04-21 7 views
6

मैं अपने नियंत्रक में मेरी पोस्ट तरीकों में से एक का परीक्षण करना चाहता था, इसलिए मैं कुछ इस तरह लिखा:प्ले ढांचा - परीक्षण पोस्ट नियंत्रक विधि

@Test 
    public void shouldSaveNewCollectionToDatabase(){ 
     String body = "{\"name\":\"collectionName\", \"owner\": {}}"; 
     JsonNode json = Json.parse(body); 
     FakeRequest request = new FakeRequest(POST, "/rest/collections/add").withJsonBody(json); 

     Result result = callAction(controllers.routes.ref.SetsAndCollections.postCollection(), request); 
     verify(questionSetCollectionDAO).save(any(QuestionSetCollection.class)); 
    } 

बात है, इस परीक्षण में विफल रहता है क्योंकि नियंत्रक विधि लागू नहीं किया गया है बिलकुल भी मेरी questionSetCollectionDAO विधियों का उपयोग नहीं किया जाता है।

मैं घटना विधि के शीर्ष पर कुछ मुद्रण डाल:

@BodyParser.Of(Json.class) 
@play.db.jpa.Transactional 
public static Result postCollection(){ 
    System.out.println("I am here"); 
... 

और मैं कंसोल पर किसी भी उत्पादन नहीं दिख रहा।

अगर ऐसा नहीं है कि मैं नकली अनुरोधों के साथ नियंत्रक विधियों का आह्वान कर सकता हूं, तो मैं यह कैसे कर सकता हूं?

मैंने fakeApplication पढ़ा है, लेकिन क्या POST नियंत्रक विधियों के कुछ सरल परीक्षण करने का कोई अन्य तरीका है?

+1

क्या आपने कभी इसे समझ लिया है या कुछ और ढूंढ लिया है? – Meredith

उत्तर

0

क्या आप अपने परिणामों के http स्टेटस कोड को प्रिंट कर सकते हैं? यदि यह 303 रीडायरेक्ट है - जो ऐसा लगता है (क्योंकि नियंत्रक को कॉल नहीं किया जा रहा है), तो संभव है कि आपको POST विधि निष्पादित करने के लिए लॉगिन प्ले-सत्र कुकी प्रदान करने की आवश्यकता हो। सब से पहले आपको एक नकली आवेदन शुरू कर देना चाहिए, अपने बाकी सेवाओं के परीक्षण के लिए https://stackoverflow.com/a/13953375/286550

2

:

कैसे खेलें 2 में एक प्रमाणन कुकी प्राप्त करने पर इस उत्तर देखें।

FakeApplication fakeApplication=fakeApplication(); 
start(fakeApplication); 

और अंत में अपने टेस्ट पीएफ यह इसे रोकने के लिए

stop(fakeApplication); 

आप आप अपने टेस्ट कक्षा में इन तरीकों में जोड़ सकते हैं कई परीक्षण तरीकों परीक्षण प्रक्रिया को सुविधाजनक बनाने है, तो recommanded है।

FakeApplication fakeApplication = fakeApplication(); 

@Before 
public void beforeTest() { 
    start(fakeApplication); 
} 

@After 
public void afterTest() { 
    stop(fakeApplication); 
} 
संबंधित मुद्दे