2014-12-05 57 views
0

我正在用should測試我的REST API。應該測試,Javascript webservice API

目前我測試了我的方法,通過瀏覽器和控制檯測試按預期工作。

我的測試用例在使用應用程序進行測試時表現得很好,從我的API獲取GET方法。

有沒有什麼方法可以測試應該刪除和發佈的方法,我會更好地使用另一個測試環境嗎? 以下是從我的API

router.delete('/deleteProfile/:id', function (req, res) { 
var toDelete = req.params.id; 
dataLayer.deleteProfile(toDelete, function (err, result) { 
    if(err) res.status(500).send('Person + ' + toDelete+ ' not deleted') 
    else{ 
    console.log(result); 
    res.json(result); 

    } 
}); 

繼片斷是我測試的一個片段:

it("Should delete the user With the userName FrækFyr91", function (done) { 
    http.get("http://localhost:"+testPort+"/profileApi/deleteProfile/FrækFyr91",function(res){ 
     res.setEncoding("utf8");//response data is now a string 
     res.on("data",function(chunk){ 
      var n = JSON.parse(chunk); 
      n.length.should.equal(4); 
      done(); 
     }); 
    }) 
}); 

我知道http.delete不會工作。 有什麼建議嗎?

回答

0

與其使用http,我建議使用專門的REST客戶端庫之一,如restler,這些庫專門用於與RESTful路由進行通信。

您也可以考慮使用chai作爲測試斷言,因爲它提供非常全面的BDD樣式斷言。

所以不是你的:

http.get(endpointUrl,function(res){ 
    res.on('data',...); 
}); 

我會使用:

var mocha=require('mocha'), 
    should=require('chai').should(), 
    client=require('restler'); 

describe('deletions',function(){ 

    it('should delete something',function(done){ 

    client.del(deleteEndpointUrl).on('complete',function(result){ 

     // if the request failed, result will be an Error 
     if(result instanceof Error) { 
     return done(result); // return error 
     } 

     // test result here 

     result.should.be.an.object; // chai.should extends objects with assertions 

     // etc. 

     done(); 

    }); 

    }); 

});