业力测试以良好的价值失败?
Karma tests failing with the good values?
我开始使用 karma 进行一些单元测试,但我不明白为什么我的第一个测试没有通过。
这是一个控制器文件:
angular.module('balrogApp.requests', [
/* Dependancies */
])
// Routes configuration
.config(['$routeProvider', function($routeProvider) {
/* $routeProvider configuration */
}])
.controller('requestsController', function(Requests, Users, Projects, RequestsComments, CostEstimations,
Regions, growl, $route, $rootScope, $scope, $location) {
this.requestTypesList = [
{name: "New", trigram: "NEW"},
{name: "Enhancement", trigram: "ENH"}
];
this.requestPrioritiesList = [
{name: "Low", trigram: "LOW"},
{name: "Medium", trigram: "MED"},
{name: "High", trigram: "HIG"}
];
/* ... */
});
这是测试文件:
describe('Requests controller', function() {
beforeEach(module('balrogApp.requests'));
var ctrl;
var scope;
var requestTypesList = [
{name: "New", trigram: "NEW"},
{name: "Enhancement", trigram: "ENH"}
];
var requestPrioritiesList = [
{name: "Low", trigram: "LOW"},
{name: "Medium", trigram: "MED"},
{name: "High", trigram: "HIG"}
];
beforeEach(inject(function($rootScope, $controller) {
scope = $rootScope.$new();
ctrl = $controller('requestsController', { $scope: scope });
}));
afterEach(function() {
scope.$destroy();
});
it('should have proper requestTypesList value', function(){
expect(ctrl.requestTypesList).toBe(requestTypesList);
});
it('should have proper requestPrioritiesList value', function(){
expect(ctrl.requestPrioritiesList).toBe(requestPrioritiesList);
});
});
但这是测试结果:
Chrome 43.0.2357 (Windows 7 0.0.0) Requests controller should have
proper requestTypesList value FAILED
Expected
[ Object({ name: 'New', trigram: 'NEW' }), Object({ name:
'Enhancement', trigram: 'ENH' }) ]
to be
[ Object({ name: 'New', trigram: 'NEW' }), Object({ name:
'Enhancement', trigram: 'ENH' }) ].
at Object.
(C:/Users/aazor102115/Desktop/Dev/Balrog/tests/requests.js:28:35)
Chrome 43.0.2357 (Windows 7 0.0.0) Requests controller should have
proper requestPrioritiesList value FAILED
Expected [ Object({ name: 'Low', trigram: 'LOW' }), Object({ name:
'Medium', trigram: 'MED' }), Object({ name: 'High', trigram: 'HIG' })
]
to be
[ Object({ name: 'Low', trigram: 'LOW' }), Object({ name: 'Medium',
trigram: 'MED' }), Object({ name: 'High', trigram: 'HIG' }) ].
at Object.
(C:/Users/aazor102115/Desktop/Dev/Balrog/tests/requests.js:32:40)
Chrome 43.0.2357 (Windows 7 0.0.0): Executed 2 of 2 (2 FAILED) ERROR
(0.12 secs / 0.105 secs)
因此,即使日志中的值相同,测试也会失败。为什么会这样以及如何解决?
将您的 toBe
断言更改为 toEqual
,它们在内存中不是同一个对象。
我开始使用 karma 进行一些单元测试,但我不明白为什么我的第一个测试没有通过。
这是一个控制器文件:
angular.module('balrogApp.requests', [
/* Dependancies */
])
// Routes configuration
.config(['$routeProvider', function($routeProvider) {
/* $routeProvider configuration */
}])
.controller('requestsController', function(Requests, Users, Projects, RequestsComments, CostEstimations,
Regions, growl, $route, $rootScope, $scope, $location) {
this.requestTypesList = [
{name: "New", trigram: "NEW"},
{name: "Enhancement", trigram: "ENH"}
];
this.requestPrioritiesList = [
{name: "Low", trigram: "LOW"},
{name: "Medium", trigram: "MED"},
{name: "High", trigram: "HIG"}
];
/* ... */
});
这是测试文件:
describe('Requests controller', function() {
beforeEach(module('balrogApp.requests'));
var ctrl;
var scope;
var requestTypesList = [
{name: "New", trigram: "NEW"},
{name: "Enhancement", trigram: "ENH"}
];
var requestPrioritiesList = [
{name: "Low", trigram: "LOW"},
{name: "Medium", trigram: "MED"},
{name: "High", trigram: "HIG"}
];
beforeEach(inject(function($rootScope, $controller) {
scope = $rootScope.$new();
ctrl = $controller('requestsController', { $scope: scope });
}));
afterEach(function() {
scope.$destroy();
});
it('should have proper requestTypesList value', function(){
expect(ctrl.requestTypesList).toBe(requestTypesList);
});
it('should have proper requestPrioritiesList value', function(){
expect(ctrl.requestPrioritiesList).toBe(requestPrioritiesList);
});
});
但这是测试结果:
Chrome 43.0.2357 (Windows 7 0.0.0) Requests controller should have proper requestTypesList value FAILED
Expected
[ Object({ name: 'New', trigram: 'NEW' }), Object({ name: 'Enhancement', trigram: 'ENH' }) ]
to be
[ Object({ name: 'New', trigram: 'NEW' }), Object({ name: 'Enhancement', trigram: 'ENH' }) ].
at Object. (C:/Users/aazor102115/Desktop/Dev/Balrog/tests/requests.js:28:35)
Chrome 43.0.2357 (Windows 7 0.0.0) Requests controller should have proper requestPrioritiesList value FAILED
Expected [ Object({ name: 'Low', trigram: 'LOW' }), Object({ name: 'Medium', trigram: 'MED' }), Object({ name: 'High', trigram: 'HIG' }) ]
to be
[ Object({ name: 'Low', trigram: 'LOW' }), Object({ name: 'Medium', trigram: 'MED' }), Object({ name: 'High', trigram: 'HIG' }) ].
at Object. (C:/Users/aazor102115/Desktop/Dev/Balrog/tests/requests.js:32:40) Chrome 43.0.2357 (Windows 7 0.0.0): Executed 2 of 2 (2 FAILED) ERROR (0.12 secs / 0.105 secs)
因此,即使日志中的值相同,测试也会失败。为什么会这样以及如何解决?
将您的 toBe
断言更改为 toEqual
,它们在内存中不是同一个对象。