断言错误对 mocha 没有影响
Assertion errors have no effect in mocha
我正在尝试为一个简单的 MEAN 应用程序构建测试。
下面的代码有效,但如果在 pyshe.save
函数内出现任何断言错误,它们不会转发给 gulp 并且测试仍然通过。其他一切都按预期工作。
//test.js
var assert = require('assert');
var mongoose = require('mongoose');
var userSchema = require('./userSchema');
var periodSchema = require('./periodSchema');
var connection = mongoose.connect('mongodb://localhost:21846/test');
describe('Mongoose Schemas', function() {
var Period = mongoose.model('Period', periodSchema);
var User = mongoose.model('User', userSchema);
var succeeded = 0;
describe('Period Model', function() {
it('accepts dates', function() {
var pyshePeriod = new Period({
start: new Date("2015-12-05"),
end: new Date("2015-12-10")
});
++succeeded;
});
it('matches the `start` date', function() {
var pyshePeriod = new Period({
start: new Date("2015-12-05"),
end: new Date("2015-12-10")
});
assert.equal(
pyshePeriod.start.toString(),
"Sat Dec 05 2015 05:30:00 GMT+0530 (IST)"
);
++succeeded;
});
it('matches the `end` date', function() {
var pyshePeriod = new Period({
start: new Date("2015-12-05"),
end: new Date("2015-12-10")
});
assert.equal(
pyshePeriod.end.toString(),
"Thu Dec 10 2015 05:30:00 GMT+0530 (IST)"
);
++succeeded;
});
it('refers the user_id', function() {
var pyshe = new User({
name: 'Banana Apple Pineapple'
});
var pyshePeriod = new Period({
start: new Date("2015-12-05"),
end: new Date("2015-12-10"),
user: pyshe._id
});
assert.equal(pyshePeriod.user, pyshe._id);
});
it('populates the user', function() {
var pyshe = new User({
name: 'Banana Apple Pineapple',
age: 27
});
pyshe.save(function (err) {
if (err) {
console.log(err);
};
var pyshePeriod = new Period({
start: new Date("2015-12-05"),
end: new Date("2015-12-10"),
user: pyshe._id
});
pyshePeriod.save(function (err) {
if (err) {
console.log(err);
};
});
var period = Period
.findOne({_id: "56c7eee3e4292384197f3d30"})
.populate('user')
.exec(function (err, period){
if (err) {
console.log(err);
};
assert.equal(2, 3); //no error in mocha
});
});
});
});
describe('User Model', function() {
it('accepts names', function() {
var pyshe = new User({
name: 'Banana Apple Pineapple'
});
assert.equal(pyshe.name, 'Banana Apple Pineapple');
++succeeded;
});
it('accepts age', function() {
var pyshe = new User({
age: 27
});
assert.equal(pyshe.age, 27);
});
});
});
使用 Mocha 测试异步代码可以在测试完成时简单地调用回调。通过向 it()
添加回调(通常命名为 done
)。 Mocha 会知道它应该等待完成。
it('populates the user', function(done) {
var pyshe = new User({
name: 'Banana Apple Pineapple',
age: 27
});
pyshe.save(function (err) {
if (err) {
done(err);
};
// other case
done();
我正在尝试为一个简单的 MEAN 应用程序构建测试。
下面的代码有效,但如果在 pyshe.save
函数内出现任何断言错误,它们不会转发给 gulp 并且测试仍然通过。其他一切都按预期工作。
//test.js
var assert = require('assert');
var mongoose = require('mongoose');
var userSchema = require('./userSchema');
var periodSchema = require('./periodSchema');
var connection = mongoose.connect('mongodb://localhost:21846/test');
describe('Mongoose Schemas', function() {
var Period = mongoose.model('Period', periodSchema);
var User = mongoose.model('User', userSchema);
var succeeded = 0;
describe('Period Model', function() {
it('accepts dates', function() {
var pyshePeriod = new Period({
start: new Date("2015-12-05"),
end: new Date("2015-12-10")
});
++succeeded;
});
it('matches the `start` date', function() {
var pyshePeriod = new Period({
start: new Date("2015-12-05"),
end: new Date("2015-12-10")
});
assert.equal(
pyshePeriod.start.toString(),
"Sat Dec 05 2015 05:30:00 GMT+0530 (IST)"
);
++succeeded;
});
it('matches the `end` date', function() {
var pyshePeriod = new Period({
start: new Date("2015-12-05"),
end: new Date("2015-12-10")
});
assert.equal(
pyshePeriod.end.toString(),
"Thu Dec 10 2015 05:30:00 GMT+0530 (IST)"
);
++succeeded;
});
it('refers the user_id', function() {
var pyshe = new User({
name: 'Banana Apple Pineapple'
});
var pyshePeriod = new Period({
start: new Date("2015-12-05"),
end: new Date("2015-12-10"),
user: pyshe._id
});
assert.equal(pyshePeriod.user, pyshe._id);
});
it('populates the user', function() {
var pyshe = new User({
name: 'Banana Apple Pineapple',
age: 27
});
pyshe.save(function (err) {
if (err) {
console.log(err);
};
var pyshePeriod = new Period({
start: new Date("2015-12-05"),
end: new Date("2015-12-10"),
user: pyshe._id
});
pyshePeriod.save(function (err) {
if (err) {
console.log(err);
};
});
var period = Period
.findOne({_id: "56c7eee3e4292384197f3d30"})
.populate('user')
.exec(function (err, period){
if (err) {
console.log(err);
};
assert.equal(2, 3); //no error in mocha
});
});
});
});
describe('User Model', function() {
it('accepts names', function() {
var pyshe = new User({
name: 'Banana Apple Pineapple'
});
assert.equal(pyshe.name, 'Banana Apple Pineapple');
++succeeded;
});
it('accepts age', function() {
var pyshe = new User({
age: 27
});
assert.equal(pyshe.age, 27);
});
});
});
使用 Mocha 测试异步代码可以在测试完成时简单地调用回调。通过向 it()
添加回调(通常命名为 done
)。 Mocha 会知道它应该等待完成。
it('populates the user', function(done) {
var pyshe = new User({
name: 'Banana Apple Pineapple',
age: 27
});
pyshe.save(function (err) {
if (err) {
done(err);
};
// other case
done();