나는 $ q.all을 사용하여 하나의 약속으로 포장 한 다음 약속이 모두 동시에 해결되는지 테스트하는 단위 테스트를 작성하려고합니다. 난 그냥이 약속을 모두 포함하는 하나의 약속으로 이동 한 후 해결 될 필요가 실제로 여기에 아무것도에 대한 GET 요청을 사용하지 않으 Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
:이약속을위한 각도 재스민 단위 테스트
describe("Application controller", function() {
var scope;
var controller;
beforeEach(module('my.namespace'));
//this suite can be removed.
describe("Application ", function() {
beforeEach(
inject(function ($rootScope, $controller,$q) {
scope = $rootScope.$new();
controller = $controller('Application', {
'$scope': scope
});
}));
it("should package two promises into one", function (done) {
inject(function ($rootScope) {
setTimeout(function() {
$rootScope.$apply(function() {
var promiseOne = $q.defer(),
//promiseOneData;
promiseTwo = $q.defer();
//promiseTwoData
promiseOne.then(function(data){
promiseOne.resolve('promiseOne');
expect(1).toBe(1);
});
promiseTwo.then(function(data){
promiseTwoData.resolve('promiseTwo');
})
var allPromises = $q.all([promiseOne,promiseTwo]);
allPromises.then(function(data){
//data should contain an array of two empty elements for each promise
expect(data.length).toBe(2);
});
done();
});
}, 1000);
})
});
가 나는 오류가 발생합니다. 각과 재스민으로 어떻게 할 수 있습니까?
이 답변의 많은이 할 수없는 어떤 사람을 말한다 점에서 유용하다; 그러나 그 테스트가 실제로 대신 어떻게 보이게해야합니까? 그것은 사람들에게 그들이해야 할 것을 보여주기위한 진짜 유용한 대답입니다. –
글쎄, 그가하고 싶은 일은 할 수 없으니, 시험은 어떻게 생겼을 까? JS에서 동시에 두 가지 일을 할 수 있다는 전제는 잘못되었습니다. 또한 질문은 그가 진짜로 원하는 것을 불분명하게하고 질문은 개선되지 않았습니다. 약속이 해결되었는지 테스트하는 것은 보통 스파이들과 함께하는 것이 가장 좋습니다.이 질문을보십시오. http://stackoverflow.com/questions/26319873/how-to-test-value-returned-in-promise-from-angularjs-controller-with-jasmine/26328984#26328984 – oldwizard