我正在使用mocha进行测试,某些模块有一些行为。例如,我想要那个
var module = new Module()
module.getSomething()
将返回[0,0]。所以,我试图测试它:
var assert = require('assert')
, Module = require('../lib/module')
describe('Module()', function () {
describe('#getSomething()', function () {
it('should return [0,0] by default', function () {
var map = new Module()
assert.equal([0, 0], map.getCenter()[0])
})
})
})
测试失败。经过一番尝试,......我陷入了这个考验:
var assert = require('assert')
describe('[0,0]', function () {
it('should be equals to [0,0]', function () {
assert.equal([0, 0], [0, 0])
})
})
嗯,我想我在javascript中有一些差距。好吧,我需要创建一个模块,在某些时候返回像{x:0,y:0}这样的小对象。有人可以解释我测试这些东西的方法吗?这种方式有效,......是正确的吗?
describe('#getCenter()', function () {
it('should return [0,0] by default', function () {
var map = new Map()
assert.equal(0, map.getCenter().x)
assert.equal(0, map.getCenter().y)
})
})
答案 0 :(得分:1)
这只是因为,在JavaScript中,对象的比较是通过引用而不是通过深度相等检查来完成的。
示例:
[] == [] // false
[1] == [1] // false
({} === {}) // false
相反,您可以使用assert.deepEqual
,这将达到预期效果。
(以防万一你想知道,我把括号括在{}
左边,使它成为一个表达式,而不是让第一个{}
成为一个块(代码将是{}; === {}
因此无效))