2017-02-14 13 views
0

この私の機能は、ライフスタイル矢筈、モカ、捕捉されないAssertionErrorがテスト:

var url="http://blah/get/[type]/[id]"; 
function lifeStyle(req,res){ 
    var dataEnter={ 
     'id':1797, 
     'type':'lifestyle' 
    } 
    var p = promiseStyle(dataEnter); 
    p.then(function(data) { 
     res.send(data); 
    }).catch(function(err) { 
     console.log(err); 
    }) 
} 
function promiseStyle(dataEnter){ 
    var urlData = url.replace("[type]",dataEnter.type).replace("[id]",dataEnter.id); 
    var prom=new Promise (function(resolve,reject){ 
     http.get(urlData,function(res) { 
      var data = ""; 
      res.setEncoding('utf8');    
      res.on("data", function(chunk) {  
       data += chunk;      
      })         
      res.on("end", function() {   
       resolve(JSON.parse(data));     
      });         
      res.on("error", function(error) { 
       console.log("Got error: " + error.message); 
       reject(error); 
      }); 
     }); 
    }) 
    return prom; 
} 

exports.lifeStyle=lifeStyle; 
exports.lifeStyleId=lifeStyleId; 

と呼ばれ、これは私がそれにモカとノックのテストを使用する機能のための私のテストファイルですが、そのそのres.body inspiteofれる渡していません予想されるオブジェクト

describe("function lifeStyle",function(){ 
    it("should response is equal expected",function(done){ 
     var scope=nock('http://blah/get') 
        .get('/lifestyle/1797') 
        .reply(200,expectedReply) 
      request(server).get('/lifestyle') 
      .end(function(err, res) { 
       if(err){ 
       console.log(err); 
       done(err); 
       }else{ 
       console.log("res.body: ", res.body,res.status); 
       console.log("expectedReply ", expectedReply); 
       expect(res.status).to.equal(200); 
       expect(res.body).to.equal(expectedReply); 
       scope.done(); 
       done(); 
       } 
      }); 

     }); 
     }); 

に等しい私は、このエラーfunctioを作るための方法を

function lifeStyle 
    res.body: { location: { id: 1797, forecast: { step: [Object] }, name: 'city' } } 200 
    expectedReply { location: { id: 1797, forecast: { step: [Object] }, name: 'city' } } 
     1) should response is equal expected 


     0 passing (63ms) 
     1 failing 

     1) function lifeStyle should response is equal expected: 

      Uncaught AssertionError: expected { Object (location) } to equal { Object (location) } 
      + expected - actual 


      at Test.<anonymous> (specs/lifeStyleSpec.js:84:37) 
      at Test.assert (node_modules/supertest/lib/test.js:179:6) 
      at Server.assert (node_modules/supertest/lib/test.js:131:12) 
      at emitCloseNT (net.js:1524:8) 
を得ましたnは通過していますか?

答えて

0

は以下を使用:

expect(res.body).to.deep.equal(expectedReply); 
+0

ようdeep.equal(オブジェクトの各キーの値)の要素または要素のデータのために等しいですか? – mary

+0

は、単に「それは横断する」ことを意味し、オブジェクトにはレイヤーがあるため、等価性を判断するために横断する必要があります。キーと値のペアをチェックします。 – LostJon

関連する問題