gpt4 book ai didi

node.js - 使用 Mongoose Promise 对 MongoDB 查询进行单元测试

转载 作者:太空宇宙 更新时间:2023-11-03 22:32:02 25 4
gpt4 key购买 nike

我正在进行一项复杂的计算,其中涉及从多个集合中收集数据,然后对数字进行处理。为此,我遵循 TDD,并想先编写一个单元测试。我知道查询数据库违反了单元测试范例,我应该使用模拟对象,但我暂时想查询数据库来测试一些数字。我正在尝试使用 Mongoose Promise 来解决 NodeJS 的异步方面,但我无法弄清楚。这是我的代码:

(function (argument) {
'use strict';

var should = require('should');
var assert = require('chai').assert;
var mongoose = require('mongoose');
var MeasureTherm = mongoose.model('MeasureTherm');

describe('Calculations Server Test', function (){

describe('Model Tests', function () {
it('should find all MeasureTherms for a Program, Year and End Use', function () {
var promise = getMeasureThermsByProgramAndEndUse("Program 1", 2015, "End Use 1").then(function(results) {
this.fulfill(results);
});

promise.onFulfill(function(results){
assert.equal(200, results.length);
});

});
});
});

var getMeasureThermsByProgramAndEndUse = function (program, year, endUse) {
return MeasureTherm.find().exec();
};
})();

即使我在assert.equal()中输入无效数字,我的测试也总是通过。

最佳答案

传入done作为测试的函数参数。这将告诉单元测试在调用之前不要结束。

it('should find all MeasureTherms for a Program, Year and End Use', function (done) { //<-- HERE
var promise = getMeasureThermsByProgramAndEndUse("Program 1", 2015, "End Use 1").then(function(results) {
this.fulfill(results);
});

promise.onFulfill(function(results){
assert.equal(200, results.length);
done(); //<-- AND HERE
});

});

关于node.js - 使用 Mongoose Promise 对 MongoDB 查询进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35471137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com