【发布时间】:2017-12-29 11:27:50
【问题描述】:
我正在为 angularjs 编写单元测试,这里有一个我无法弄清楚的错误。
这是控制器:
controller('MetricController', function($scope, $interval, $http, $filter, $routeParams, ServiceEnum, DateTimeFormatter, RefreshInterval) {
$scope.categories = {};
$scope.dataset = {};
$scope.attrs = {};
$scope.loadData = function() {
$http.get(ServiceEnum.Metrics).then(function processResponse(result) {
$scope.metricsUnsortedData = result.data;
$scope.metricsData = $filter('orderBy')($scope.metricsUnsortedData, 'instanceName');
})
.catch(function processError(error) {
$scope.metricsUnsortedData = error;
});
};
$scope.loadData();
});
这是我的单元测试。我想测试一下能不能成功返回数据:
it('should get data successfully', function() {
$httpBackend
.when('GET', 'http://localhost/foo')
.respond(200, { foo: 'bar' });
$httpBackend.flush();
expect(scope.metricsUnsortedData).toEqual({ foo: 'bar' });
});
错误是:
预期错误:[orderBy:notarray] 预期数组但已收到:{"foo":"bar"}
http://errors.angularjs.org/1.6.4/orderBy/notarray?p0=%7B%22foo%22%3A%22bar%22%7D 等于 { foo : 'bar' }。
错误:预期错误:[orderBy:notarray] 预期数组但收到:{“foo”:“bar”}
http://errors.angularjs.org/1.6.4/orderBy/notarray?p0=%7B%22foo%22%3A%22bar%22%7D 等于 { foo : 'bar' }。
在对象。 (components/metrics/metricsTest.js:97:47)
我不知道为什么会这样。之前的单元测试可以通过,这次我只在controller中添加了$filter,但是失败了。希望有人能给我一些建议。
谢谢
【问题讨论】:
标签: angularjs unit-testing filter jasmine karma-jasmine