नहीं बदल रहा है मैं जैस्मीन का उपयोग कर एंगुलरजेएस निर्देश का परीक्षण करने की कोशिश कर रहा हूं। निर्देश डी 3js का उपयोग कर पोस्टलिंक चरण में टेम्पलेट में एसवीजी तत्व जोड़ने के लिए है। यह वास्तविक अनुप्रयोग में ठीक काम करता है।यूनिट परीक्षण AngularJS निर्देश, पोस्टलिंक डी 3 डीओएम
इकाई परीक्षण में ऐसा प्रतीत होता है कि डी 3 कोड कभी निष्पादित नहीं होता है।
इस कोड का एक सरलीकृत संस्करण है कि अभी भी त्रुटि को पुनरुत्पादित करता है:
describe('directive test', function() {
var element, scope;
beforeEach(module('app'));
beforeEach(inject(function ($rootScope, $compile) {
scope = $rootScope.$new();
element = '<d3-test></d3-test>';
element = $compile(element)(scope);
scope.$apply();
}));
it('should have an SVG child element', function() {
expect(element.html()).toEqual('<div id="map"><svg></svg></div>');
});
});
त्रुटि मैं प्राप्त है:
PhantomJS 1.9.8 (Mac OS X) directive test should have an SVG child element FAILED
Expected '<div id="map"></div>' to equal '<div id="map"><svg></svg></div>'.
angular.module('app', []);
angular.module('app').directive('d3Test', function() {
return {
template: '<div id="map"></div>',
restrict:'E',
scope: {
someAttr: '@',
},
link: function postLink(scope, element, attrs) {
d3.select('#map').append('svg');
}
};
});
इस इकाई परीक्षण है
क्या मेरी उम्मीद गलत है कि मैं डीओएम परिवर्तन डी 3 के लिए कैसे परीक्षण कर सकता हूं? मैं इसका सबसे अच्छा परीक्षण कैसे कर सकता हूं?
अरे, मेरे लिए लाइन तत्व = $ संकलन (तत्व) (दायरा); अजीब लग रहा है। क्या यह इरादा है? ऐसा लगता है कि आप एक पैरामीटर के रूप में गुंजाइश पास करना चाहते हैं। – Codebryo
एनएम, स्पष्ट रूप से लिखते हैं। लेकिन AnglarJS पृष्ठ पर वे गुंजाइश का उपयोग करते हैं। $ Digest(); आवेदन के insted। जब मैं सही ढंग से – Codebryo
https://docs.angularjs.org/guide/unit-testing#testing-directives – Codebryo