Mocha/Chai JSON 比较失败
Mocha/Chai JSON comparison fails
我正在使用 mocha 和 chai 来测试我的 angular 服务。在一些测试用例中,我想比较两个对象。其中之一被转换为 JSON 并从 JSON 解析回一个对象。
如果我使用 chai 比较两个对象,测试失败。这是我的测试代码:
var expected = {name: 'TestObject'};
window.localStorage.setItem('test', angular.toJson(expected));
var actual = StorageService.get('test');
expect(actual).to.equal(expected);
这是 StorageService.get()
函数的实现:
function get(name) {
if (angular.isDefined(webStorage)) {
var value = webStorage.getItem(name);
if (angular.isObject(value)) {
return null;
}
return angular.fromJson(value);
}
}
错误信息如下:
AssertionError: expected { name: 'TestObject' } to equal { name:
'TestObject' }
对我来说,这两个对象似乎是一样的。这里有什么问题?
我已更改测试以比较两个对象的 JSON 表示,而不是直接比较对象:
var expected = angular.toJson({name: 'TestObject'});
window.localStorage.setItem('test', expected);
var actual = StorageService.get('test');
expect(angular.toJson(actual)).to.equal(expected);
这给出了正确的测试结果。
使用深度相等
expect(actual).to.deep.equal(expected);
我正在使用 mocha 和 chai 来测试我的 angular 服务。在一些测试用例中,我想比较两个对象。其中之一被转换为 JSON 并从 JSON 解析回一个对象。
如果我使用 chai 比较两个对象,测试失败。这是我的测试代码:
var expected = {name: 'TestObject'};
window.localStorage.setItem('test', angular.toJson(expected));
var actual = StorageService.get('test');
expect(actual).to.equal(expected);
这是 StorageService.get()
函数的实现:
function get(name) {
if (angular.isDefined(webStorage)) {
var value = webStorage.getItem(name);
if (angular.isObject(value)) {
return null;
}
return angular.fromJson(value);
}
}
错误信息如下:
AssertionError: expected { name: 'TestObject' } to equal { name: 'TestObject' }
对我来说,这两个对象似乎是一样的。这里有什么问题?
我已更改测试以比较两个对象的 JSON 表示,而不是直接比较对象:
var expected = angular.toJson({name: 'TestObject'});
window.localStorage.setItem('test', expected);
var actual = StorageService.get('test');
expect(angular.toJson(actual)).to.equal(expected);
这给出了正确的测试结果。
使用深度相等
expect(actual).to.deep.equal(expected);