0
内のサービスコールを実行せずにノードの機能をテストするためにSinonを使用しました私は、外部サービスへのアウトコールを避けるが、私は、データを処理することができるようにバックセットシミュレーション結果を得ることができるようにサービス呼び出しを模擬するために、私のテストを書く方法を知っていません。私は再配線を使用しますか(もしそうなら、どうしたらうまくいくでしょうか)?どんな援助もありがとう!私は私のコード(私は以下のテストをしたいものの簡易版)のためにテストを書き、そして他のものをテストするためにsinonとチャイを使用しようとしているが、やるよ
qf = require('./service/queryFile');
function countByDate(req, res, next){
//do stuff to create variable to pass to service call
var queryCriterion = {
d1 = req.query.d1,
d2 = req.query.d2
}
//make service call and process results
qf.getByDateAsync(queryCriterion)
.then(function(results){
var data = {};
//do some things with results data
data = results.data;
//return data object
res.json({
success: true,
data: data,
});
});
}
module.exports = {
countByDate: countByDate
};
****追加の詳細****
queryFile:
function getByDate(criterion){
//query from database
//process results
return {
key1: aValue,
key2: bValue,
data: arrayOfObjects
};
}
exports = module.exports = {
getByDate: getByDate,
getByDateAsync: Promise.promisify(getByDate)
};
テスト:
var pf = require('./service/processFile');
var qf = require('./service/queryFile');
var req, res;
before(function(){
this.timeout(30000);
});
beforeEach(function(){
res.json = sinon.spy();
res.status = sinon.stub().returns({json: sinon.spy()});
});
describe('test', function(){
it('should return results from countByDate', function(done){
var eDate = new Date();
var sDate = eDate.getDate()-60;
req = res = {};
req.query = {
d1: sDate,
d2: eDate
};
var testData = [{
key1: '',
key2: '',
data: [{aKey: new Date(), count: 100}]
}];
sinon.stub(qf, 'getByDateAsync').returns(Promise.resolve({data:tData}));
pf.countByDate(req,res);
console.log(res.json.data);
}
私はこれを試してみたし、テストが失敗し、フック... はTypeError「それぞれの前に」エラーを受信:関数として未定義のプロパティgetByDateAsyncをラップしようとしました。 –
次に、あなたのQFファイルは、その方法を公開していない、とあなたのコードはまったく実行されません。 – jishi
いくつかの変更を行い、さらに詳細を追加しました...エラーが表示されます:qf.getByDateAsync(queryCriterion) TypeError:未定義は関数ではありません –