使用 mocha 和 chai 测试数组输出
Using mocha and chai to test outputs which are arrays
我是测试新手 Javascript,所以这可能是显而易见的。我正在使用框架 Mocha 和断言库 Chai 来测试 Javascript 工具。
我有几个函数可以输出一个包含多个元素的数组。如何使用 Chai 对此进行测试?
这是一个例子:
var chai = require('chai');
var assert = chai.assert;
var expect = chai.expect;
// define an array
var Arr = [3, 4, 5, 6, 10];
console.log(Arr.slice(1, 3))
// outputs [4, 5]
// this will fail
describe('subsetting an array', function() {
it('array subset', function() {
assert.equal(Arr.slice(1, 3), [4, 5])
});
});
因此此测试失败并出现以下错误:
AssertionError: expected [ 4, 5 ] to equal [ 4, 5 ]
(1) 为什么 assert.equal()
会失败?这些都是"Array"
类型的数据结构
(2) 如何用 Chai 正确测试它?
assert.equal()
使用==
测试比较,鉴于slice()
创建了一个新数组,虽然两者具有相同数量的元素,但它们不是相同的元素(它们是实际上是两个不同的数组,包含相同的整数)
我认为你应该使用eql方法
// Target array is deeply (but not strictly) equal to [1, 2]
expect([1, 2]).to.eql([1, 2]).but.not.equal([1, 2]);
看到eql
和equal
是有区别的
如果你想坚持asssert,我想(我这里没有控制台来测试它)你可以使用deepEqual
assert.deepEqual({ tea: 'green' }, { tea: 'green' });
不过不太确定它是否适用于数组
我是测试新手 Javascript,所以这可能是显而易见的。我正在使用框架 Mocha 和断言库 Chai 来测试 Javascript 工具。
我有几个函数可以输出一个包含多个元素的数组。如何使用 Chai 对此进行测试?
这是一个例子:
var chai = require('chai');
var assert = chai.assert;
var expect = chai.expect;
// define an array
var Arr = [3, 4, 5, 6, 10];
console.log(Arr.slice(1, 3))
// outputs [4, 5]
// this will fail
describe('subsetting an array', function() {
it('array subset', function() {
assert.equal(Arr.slice(1, 3), [4, 5])
});
});
因此此测试失败并出现以下错误:
AssertionError: expected [ 4, 5 ] to equal [ 4, 5 ]
(1) 为什么 assert.equal()
会失败?这些都是"Array"
(2) 如何用 Chai 正确测试它?
assert.equal()
使用==
测试比较,鉴于slice()
创建了一个新数组,虽然两者具有相同数量的元素,但它们不是相同的元素(它们是实际上是两个不同的数组,包含相同的整数)
我认为你应该使用eql方法
// Target array is deeply (but not strictly) equal to [1, 2]
expect([1, 2]).to.eql([1, 2]).but.not.equal([1, 2]);
看到eql
和equal
如果你想坚持asssert,我想(我这里没有控制台来测试它)你可以使用deepEqual
assert.deepEqual({ tea: 'green' }, { tea: 'green' });
不过不太确定它是否适用于数组