के साथ इकाई परीक्षण $ मोडल मेरे पास एक नियंत्रक के साथ एक कोणीय ऐप है जो फ़ंक्शन कॉल के दौरान Angular-Strap
मोडल विंडो प्रदर्शित करता है। यह क्रोम में सही ढंग से काम करता है, लेकिन मुझे एक वैध इकाई परीक्षण काम करने में कमी आई है।जैस्मीन
अनुप्रयोग मॉड्यूल और FooController:
var app = angular.module("app", ["mgcrea.ngStrap"]);
app.controller("FooController", function($scope, $modal) {
var fooModal = $modal({
title: 'Foo',
content:'Bar',
show: false,
html: true,
backdrop: 'static',
placement: 'center'});
angular.extend($scope, {
makeItFoo: function() {
fooModal.show();
}
});
});
नियंत्रक कल्पना:
describe('FooController', function() {
var scope, controller, modal;
beforeEach(module('app', function ($provide) {
// Stub out $modal service
$provide.value('$modal', function() {
return {
hide: function() { },
show: function() { }
};
});
}));
beforeEach(inject(function ($rootScope, $controller, $injector) {
//set up a new scope and the controller for the test
scope = $rootScope.$new();
controller = $controller('FooController', {$scope: scope});
modal = $injector.get('$modal');
}));
it('should show the modal', function() {
var modalSpy = spyOn(modal(), 'show');
scope.makeItFoo();
expect(modalSpy).toHaveBeenCalled();
});
});
मैं मोडल प्रदर्शित करने के लिए makeItFoo()
करने के लिए अपने कॉल की उम्मीद है, लेकिन जैस्मीन विफल रहता हैत्रुटि के साथ परीक्षण। मैंने show
को true
पर मॉडल की संपत्ति को सेट करने का प्रयास किया है और show()
को अलग से कॉल नहीं किया है, और मैंने $ मोडल सेवा को दबाकर और इसे सीधे नियंत्रक में इंजेक्शन देने के अन्य रूपों की कोशिश की है, लेकिन यह एक ही त्रुटि के साथ समाप्त होता है।
मैं AngularJS 1.2.14, कोणीय-स्ट्रैप 2.0.0, और जैस्मीन 1.3.1 का उपयोग कर रहा हूं।
जब आप इसे पोस्ट करते हैं तो मैं अपना जवाब मध्य में था, आपने इसे दबाया;) – maurycy
@ मॉरीसी हाहा यह कभी-कभी मेरे साथ भी होता है .. :) – PSL
@PSL, धन्यवाद! मैं $ modal नकली करने के सही तरीके को समझने की कोशिश कर रहा था, और ऐसा लगता है। हालांकि, जैसा कि आपने वर्णन किया है, मेरी पहेली को अपडेट करने के बाद, परीक्षण अभी भी विफल रहा है। विशेष रूप से, त्रुटि अब 'तर्क' FooController 'पढ़ती है एक फ़ंक्शन नहीं है, अपरिभाषित हो गया है; अद्यतन पहेली [यहां] (http://jsfiddle.net/dimmreaper/jwom7ns2/3/)। –