2016-10-15 6 views
2

テストが失敗した場合、MochaとChaiの 'expect'文を使用して予期しないタイムアウト動作が発生します。'expect'文の失敗でMocha Chaiタイムアウトエラーが発生しました

コード:

require('./lib/test-env.js'); 

const expect = require('chai').expect; 
const estimateQuery = require('../lib/estimate-query-helper.js'); 

describe('testing auth routes', function() { 
    describe('testing estimate query helper', function() { 
    it('should return an average daily rate and occupancy rate', (done) => { 
     estimateQuery.getEstimate() 
     .then(result => { 
     expect(result[0]['avg(`Average Daily Rate`)']).to.be.a('number'); 
     expect(result[0]['avg(`Occupancy Rate LTM`)']).to.be.a('number'); 
     done(); 
     }); 
    }); 
    }); 
}); 

私は正しい値を期待してこれを実行すると、テストはタイムアウトなし/ wの渡し(と私は返される値がすべて正しい確認するためにチェックしました)。しかし、「数字」を「文字列」に変更すると、「Expected ...、Actual ...」というエラーが発生して失敗するのではなく、タイムアウトになります。そして、チャイの未解決の問題と答えを見つけることができません。あなたの助けを事前に非常に多くの

感謝を。

約束は doneコールバックで、その結果、失敗の期待によってスローされるエラーがないキャッチされているためです

答えて

3

。あなたが代わりにコールバックを使用しての約束を返すことができるように

モカは、約束を理解して呼び出される:

describe('testing auth routes', function() { 
    describe('testing estimate query helper', function() { 
    it('should return an average daily rate and occupancy rate',() => { 
     return estimateQuery.getEstimate() 
     .then(result => { 
      expect(result[0]['avg(`Average Daily Rate`)']).to.be.a('number'); 
      expect(result[0]['avg(`Occupancy Rate LTM`)']).to.be.a('number'); 
     }); 
    }); 
    }); 
}); 

期待どおりに失敗すると、約束が拒否され、テストが失敗として報告されます。

また、あなたがdoneコールバックに固執し、catchを追加することができます。

describe('testing auth routes', function() { 
    describe('testing estimate query helper', function() { 
    it('should return an average daily rate and occupancy rate', (done) => { 
     estimateQuery.getEstimate() 
     .then(result => { 
      expect(result[0]['avg(`Average Daily Rate`)']).to.be.a('number'); 
      expect(result[0]['avg(`Occupancy Rate LTM`)']).to.be.a('number'); 
      done(); 
     }) 
     .catch(done); 
    }); 
    }); 
}); 
+0

ああ意味をなさない、ありがとう!モカがそれをとても簡単にするのを忘れてしまった。とても有難い。 –

+0

この回答の最初の例で重要なことは、それが約束を返すことです。私はこれを最初に読んだときに私はそれをキャッチしませんでした。 – anjunatl

関連する問題