मैं समारोह निम्नलिखित के साथ एक डाटा सेवा हैसाइनऑन के साथ कोई वादा कैसे करता है?
function getInsureds(searchCriteria) {
var deferred = $q.defer();
insuredsSearch.get(searchCriteria,
function (insureds) {
deferred.resolve(insureds);
},
function (response) {
deferred.reject(response);
});
return deferred.promise;
}
मैं समारोह निम्नलिखित परीक्षण करना चाहते हैं:
function search()
{
dataService
.getInsureds(vm.searchCriteria)
.then(function (response) {
vm.searchCompleted = true;
if (response.insureds.length > 100) {
vm.searchResults = response.insureds.slice(0, 99);
} else {
vm.searchResults = response.insureds;
}
});
}
मैं वादा कैसे ठूंठ हैं ताकि जब मैं getInsureds फोन यह वादा और बदले हल होगा मुझे तुरंत परिणाम। मैंने इस तरह (जैस्मीन परीक्षण) शुरू किया, लेकिन मैं अटक गया हूं, क्योंकि मुझे नहीं पता कि वादे को कैसे हल किया जाए और आवश्यक तर्कों में कैसे पारित किया जाए।
it("search returns over 100 results searchResults should contain only 100 records ", function() {
var results103 = new Array();
for (var i = 0; i < 103; i++) {
results103.push(i);
}
var fakeSearchForm = { $valid: true };
var isSearchValidStub = sinon.stub(sut, "isSearchCriteriaValid").returns(true);
var deferred = $q.defer();
var promise = deferred.promise;
var dsStub = sinon.stub(inSearchDataSvc, "getInsureds").returns(promise);
var resolveStub = sinon.stub(deferred, "resolve");
//how do i call resolve and pass in results103
sut.performSearch(fakeSearchForm);
sinon.assert.calledOnce(isSearchValidStub);
sinon.assert.calledOnce(dsStub);
sinon.assert.called(resolveStub);
expect(sut.searchResults.length).toBe(100);
});
यह निम्नलिखित के साथ myClass.myFunction ठूंठ कर सकते हैं आजकल हम जिन वादों का उपयोग कर रहे हैं, उनके साथ सहमत नहीं हैं। [वादे/ए + कहें] (https://promisesaplus.com/) "पूर्ण या ऑनरेजेड को तब तक नहीं बुलाया जाना चाहिए जब तक कि निष्पादन संदर्भ स्टैक में केवल प्लेटफ़ॉर्म कोड न हो"। – Kos
असल में, मैंने यह किया है: 'var resolStub = sinon.stub (स्थगित," हल करें ")। रिटर्न ({तब: फ़ंक्शन() {}});' –