2014-11-24 5 views
5

मैं मोचा का उपयोग करके एपीआई परीक्षणों की एक श्रृंखला निष्पादित करने के लिए निम्न के जैसा कुछ उपयोग कर रहा हूं। यह बहुत अच्छा है, लेकिन इसे प्रत्येक परीक्षण के लिए एक अलग एपीआई कॉल करने की आवश्यकता है। मैं एक ही एपीआई कॉल का उपयोग करना चाहता हूं और उस प्रतिक्रिया के खिलाफ कई परीक्षण चला सकता हूं। मैं पढ़ रहा हूं कि आप इसे करने के लिए before का उपयोग कर सकते हैं, लेकिन वेब के आसपास के किसी भी उदाहरण वास्तव में इसे एपीआई कॉल के साथ काम नहीं दिखाते हैं?नोड.जेएस + चाई/मोचा/चाहिए: एक ही प्रतिक्रिया के खिलाफ कई परीक्षण चलाएं

var chai = require('chai'); 
var request = require('request'); 
var async = require('async'); 
var assert = chai.assert, 
    expect = chai.expect, 
    should = chai.should(); 

describe('/', function() { 
    it('should return 200', function (done) { 
    request.get('http://localhost:8000', function (err, res, body) { 
     res.should.have.status(200); 
     done(); 
    }); 
    }); 

    it('should say "Hello, world!"', function (done) { 
    request.get('http://localhost:8000', function (err, res, body) { 
     body.should.have.property('type', 'aType'); 
     done(); 
    }); 
    }); 
}); 

उत्तर

5

आप एक before समारोह इतना तरह के साथ ऐसा कर सकता है ...

var chai = require('chai'); 
var request = require('request'); 
var async = require('async'); 
var assert = chai.assert, 
    expect = chai.expect, 
    should = chai.should(); 

describe('/', function() { 
    var firstRequest; 

    before(function(done) { 
    request.get('http://localhost:8000', function(err, res, body) { 
     firstRequest = { 
     err:err, 
     res:res, 
     body:body 
     }; 
     done(); 
    }); 
    }); 

    it('should return 200', function (done) { 
    firstRequest.res.should.have.status(200); 
    done(); 
    }); 

    it('should say "Hello, world!"', function (done) { 
    firstRequest.body.should.have.property('type','aType'); 
    done(); 
    }); 
}); 

हालांकि, जब तक आप यह करने के लिए एक बहुत अच्छा कारण है, मुझे लगता है कि आप से बेहतर बस के संयोजन कर रहे हैं परीक्षण।

var chai = require('chai'); 
var request = require('request'); 
var async = require('async'); 
var assert = chai.assert, 
    expect = chai.expect, 
    should = chai.should(); 

describe('/', function() { 
    it('should return 200 and say "Hello, world!"', function (done) { 
    request.get('http://localhost:8000', function (err, res, body) { 
     res.should.have.status(200); 
     body.should.have.property('type', 'aType'); 
     done(); 
    }); 
    }); 
}); 

यदि परीक्षण विफल रहता है तो मोचा विशिष्ट कारण की रिपोर्ट करेगा कि यह क्यों विफल रहा है, भले ही दो दावे हैं।

+0

ऐसा करने के बारे में सोचा, लेकिन जब मेरे पास 10 या उससे अधिक शरीर के दावे होते हैं, तो यह वास्तव में बदसूरत हो रहा है कि क्या हो रहा है इसका वर्णन करने की कोशिश कर रहा है। लागू विवरणों के साथ एक पंक्ति में परीक्षणों की एक अच्छी साफ सूची होने की उम्मीद थी। – brandonscript

+0

विचित्र रूप से 'must.have.status' इस तरह से अच्छी तरह से खेलना प्रतीत नहीं होता है - यकीन नहीं क्यों। उम्मीद है कि मैं इसे समझता हूँ! – brandonscript

+0

बस एक अपडेट: यदि आप केवल प्रतिक्रिया की जांच कर रहे हैं तो आपको परीक्षणों पर 'किए गए' की आवश्यकता नहीं है। आपके पहले उदाहरण में 'it()' खंडों के अंदर async कुछ भी नहीं चल रहा है। – deitch

संबंधित मुद्दे

 संबंधित मुद्दे