2017-05-31 1 views
0

私はchaiを通じてPUTルートをテストしようとしていますが、チャイを通して送信されたデータは関数に正しく渡されません。 loanIDの値を確認するためにconsole.logを使用したときは、定義されていません。私はメソッドを渡すために間違った方法を使用しているので、私はその確信していません。 Postmanを使用してテストすると、ルートは正常に動作します。パラメータがチャイで合格しない

モカ・チャイ試験:

describe('PUT /loanApproval',() => { 
    it('it should give approval to loans', (done) => { 
     const loan = new Loan({ loanID : 1, 
           manager : 'John Doe', 
           status : 'Approve'}); 

     loan.save((err, loan) => { 
      chai.request(server) 
       .put('/loanApproval') 
       .send(loan) 
       .end((err, res) => { 
        res.should.have.status(200); 
        res.body.should.be.a('object'); 
        res.body.should.have.property('result'); 
        res.body.result.should.have.property('loanID').eql(1); 
        res.body.result.should.have.property('manager'); 
        res.body.result.should.have.property('status'); 
        done(); 
       }); 
     }); 
    }); 
}); 

機能:

//loan aproval 
this.loanApproval = function(req,res) { 
    const loanID = req.params.loanID; 
    //geting existing details from loan 
    Loan.findOne({ 'loanID' : loanID }, function(err, loan) { 
     if(err) { 
      console.log(err); 
      return res.send({'error':err}); 
     } 
     else if (!loan) { 
      // If loan doesn't exist i.e. the wrong loanID was given 
      req.log.error('Loan does not exist to update: ', loanID); 
      return res.json({'error':'Record does not exist'}); 
     } 

     //update deteails 
     loan.manager = req.params.manager; 
     loan.status = req.params.status; 

     //send data to database 
     loan.save(function(err, result) { 
      if(err) { 
       console.log(err); 
       return res.send({'error':err}); 
      } 
      else { 
       return res.json({'Aproval details':result}); 
      } 
     }); 
    }); 
}; 

エラー:

Loan PUT /loanApproval it should give approval to loans: 
Uncaught AssertionError: expected { error: 'Record does not exist' } to 
    have a property 'result' 
at chai.request.put.send.end (test\loan.js:261:46) 
at Test.Request.callback (node_modules\superagent\lib\node\index.js:619:12) 
at node_modules\superagent\lib\node\index.js:795:18 
at IncomingMessage.<anonymous> 
    (node_modules\superagent\lib\node\parsers\json.js:16:7) 
at endReadableNT (_stream_readable.js:975:12) 
at _combinedTickCallback (internal/process/next_tick.js:80:11) 
at process._tickDomainCallback (internal/process/next_tick.js:128:9) 

答えて

0

という名前のために使用されることを意味しているあなたのルートハンドラ関数req.paramsを使用しています、ルートパラメータ(:xxxプレースホルダで宣言されているルート) )。

req.paramsを使用する代わりに、req.bodyを使用する必要があります。

あなたが言ったように、なぜそれがPostmanでうまくいくのか分かりません。

関連する問題