मैं एक ऐसी सेवा का परीक्षण करने की कोशिश कर रहा हूं जो मैं बनाता हूं जो एंगुलर के $q वादा के कार्यान्वयन का उपयोग करता है। मैं कर्म, मोचा, चाई, सीनॉन, सिनन चाई और चाई के वादे के संयोजन के रूप में उपयोग कर रहा हूं।
मेरे द्वारा लिखे गए सभी परीक्षण और वादे वापस लौट रहे हैं, लेकिन वे $q.all([ ... ])
को अस्वीकार या उपयोग करते हैं। मैंने कोशिश की है कि मैं सोच सकता हूं लेकिन मुझे लगता है कि समस्या कहां है।
निम्नलिखित मैं क्या कर रहा हूँ परीक्षण की एक पतली संस्करण है:
"use strict";
describe("Promise", function() {
var $rootScope,
$scope,
$q;
beforeEach(angular.mock.inject(function (_$rootScope_, _$q_) {
$rootScope = _$rootScope_;
$q = _$q_;
$scope = $rootScope.$new();
}));
afterEach(function() {
$scope.$apply();
});
it("should resolve promise and eventually return", function() {
var defer = $q.defer();
defer.resolve("incredible, this doesn't work at all");
return defer.promise.should.eventually.deep.equal("incredible, this doesn't work at all");
});
it("should resolve promises as expected", function() {
var fst = $q.defer(),
snd = $q.defer();
fst
.promise
.then(function (value) {
value.should.eql("phew, this works");
});
snd
.promise
.then(function (value) {
value.should.eql("wow, this works as well");
});
fst.resolve("phew, this works");
snd.resolve("wow, this works as well");
var all = $q.all([
fst.promise,
snd.promise
]);
return all.should.be.fullfiled;
});
it("should reject promise and eventually return", function() {
return $q.reject("no way, this doesn't work either?").should.eventually.deep.equal("no way, this doesn't work either?");
});
it("should reject promises as expected", function() {
var promise = $q.reject("sadly I failed for some stupid reason");
promise
["catch"](function (reason) {
reason.should.eql("sadly I failed for some stupid reason");
});
var all = $q.all([
promise
]);
return all.should.be.rejected;
});
});
3, पिछले और पहले टेस्ट जो कि असफल रहे हैं। असल में यह असफल नहीं होता है, यह टाइमआउट पार होने के बाद बस हल हो जाता है और मुझे Error: timeout of 2000ms exceeded
मिलता है।
EDIT: मैंने अभी तक Kris Kowal के वादे के कार्यान्वयन के साथ परीक्षण करने का प्रयास किया है और यह इसके साथ ठीक काम करता है।
पीएसमुझे वास्तव में पता चला कि मोचा, चाई या चाई के कटोरे में कहीं भी कुछ समय बिताया गया है और afterEach
हुक को टाइमआउट से बाद में बुलाया जाता है।
यदि मैं छद्म कोड को समझ रहा हूं, ऐसा लगता है कि आप अपेक्षाओं को लिखने के बाद '$ scope। $ लागू() 'नहीं कह रहे हैं।क्या आप वचन को हल/अस्वीकार करने के बाद इसे कॉल करने का प्रयास कर सकते हैं? –
मैंने वास्तव में भी कोशिश की है, मैं इन परीक्षणों के साथ जल्द ही एक पहेली बन जाएगा और चल रहा हूं। – Roland
'$ scope चला रहा है। '' बाद में 'में' लागू 'हो सकता है यदि आप' बाद में 'चलने से पहले वादे के मूल्य की अपेक्षा करते हैं तो –