摩卡,超过2000ms的超时时间.确保在这个测试中调用了done()回调
Mocha & Chai- "timeout of 2000ms exceeded. Ensure the done() callback is being called in this test."
我收到"超时时间超过2000ms "。确保在此测试中调用了done()回调",同时对使用承诺响应的服务调用进行单元测试。我在等一个被拒绝的承诺。
单元测试 - Karma-Mocha-Chai在PhantomJS上运行
describe('teamService', function () {
var teamSrvc, q;
beforeEach(angular.mock.module('scCommon'));
beforeEach(angular.mock.inject(function ($q, teamService) {
teamSrvc = teamService;
q = $q;
}));
describe('getTeamsByNameStartWith', function () {
it('should return reject promise when passing invalid text to search', function () {
var invalidFirstArg = 132;
var validSecondArg = 10;
return teamSrvc.getTeamsByNameStartWith(invalidFirstArg, validSecondArg).then(
function (result) {
},
function (err) {
err.should.equal("Invalid text to search argument passed.");
}
);
});
});
});
下面是我正在测试的服务。我在运行站点时测试了teamService,它确实成功返回了一个被拒绝的承诺。
(function (ng) {
'use strict';
ng.module('scCommon')
.service('teamService', ['$q', '$http', function ($q, $http) {
var getTeamsByNameStartWith = function (textToSearch, optLimit) {
var defer = $q.defer();
if (typeof textToSearch != "string") {
defer.reject("Invalid text to search argument passed.");
return defer.promise;
} else if (typeof optLimit != "number") {
defer.reject("Invalid limit option argument passed.");
return defer.promise;
}
$http.get('url')
.success(function (data) {
defer.resolve(data);
})
.error(function () {
defer.reject("There was an error retrieving the teams");
});
return defer.promise;
};
return {
getTeamsByNameStartWith: getTeamsByNameStartWith
}
}])
})(angular);
我已经阅读了其他堆栈溢出的答案,并且non是成功的。
任何想法?
谢谢你的帮助。
谢谢,
一个朋友看了一下,立刻发现了这个问题。显然我需要做一个rootScope.$apply.
describe('teamService', function () {
var teamSrvc, q, rootScope;
beforeEach(angular.mock.module('scCommon'));
beforeEach(angular.mock.inject(function ($q, teamService, $rootScope) {
teamSrvc = teamService;
q = $q;
rootScope = $rootScope;
}));
describe('getTeamsByNameStartWith', function () {
it('should return reject promise when passing invalid text to search', function () {
var invalidFirstArg = 132;
var validSecondArg = 10;
teamSrvc.getTeamsByNameStartWith(invalidFirstArg, validSecondArg).then(
function (result) {
},
function (err) {
err.should.equal("Invalid text to search argument passed.");
}
);
rootScope.$apply();
});
it('should return reject promise when passing invalid number to limit', function () {
var validFirstArg = "alex";
var invalidSecondArg = "10";
teamSrvc.getTeamsByNameStartWith(validFirstArg, invalidSecondArg).then(
function (result) {
},
function (err) {
err.should.equal("Invalid limit option argument passed.");
}
);
rootScope.$apply();
});
});
相关文章:
- 函数在promise被解析后被调用,但Jasmine未通过测试.为什么?
- AngularJS因果报应测试规范承诺未解析,且未调用.then()
- 当我的单元测试失败时,回调被调用了两次
- 如何对具有多个$resource调用的角度控制器进行单元测试
- Jasmine测试工厂函数调用本地函数和另一个函数-获取错误:应该是间谍,但得到了function
- 有人能解释一下evaluate()和dragAndDrop()在下面的角度测试代码中调用了什么吗
- 我可以测试jsonp ajax调用的任何公共API
- 递归 - 测试最大堆栈大小时,调用堆栈无法弹出
- AngularJS:指令限制:“E”阻止在Jasmine单元测试中调用元素click()事件
- 如何在没有空回调的情况下测试多个调用
- 如何对调用getJSON的javascript函数进行单元测试
- 使用CasperJS在页面上测试Google Analytics JavaScript调用
- 如何模拟ajax对Jasmine测试的调用
- 使用仪器从iOS自动化测试文件进行异步调用
- Protractor:测试特定的ajax调用
- 在使用Protractor进行测试时,我可以用json文件替换结果,而不是调用实际的REST端点
- 如何在测试的函数中对外部模块进行调用
- 测试React函数是用Jest调用的
- 测试angular服务内部方法调用
- 在摩卡中使用请求调用测试函数