2014-10-13 4 views
6

में html2js मैं कर्म और जैस्मीन उपयोग कर रहा हूँ उपयोग करने के लिए। मेरे पास एक निर्देश है (निर्देशक ए कहें) टेम्पलेट जिसमें एक और निर्देश (निर्देशक बी कहें) प्रस्तुत किया जा रहा है, हालांकि यह एप्लिकेशन में ठीक काम कर रहा है लेकिन परीक्षण केस डायरेक्टिव बी के टेम्पलेट को प्रस्तुत करने में विफल रहता है।त्रुटि: अनपेक्षित अनुरोध: प्राप्त विचारों/partials/* एक नेस्टेड निर्देश भी जब मेरी AngularJS आवेदन के लिए इकाई परीक्षण के लिए कर्म/चमेली इकाई परीक्षण

Error: Unexpected request: GET views/partials/directiveb.html 
Expected GET https://my-sandbox.app.com/123456 

नीचे निर्देश ए का कोड है: - -: के बाद त्रुटि मैं मिलता है

angular.module('myApp') 
    .directive('directiveA', function (myservices, myOtherServices) { 
    return { 
     controller: function(){ 
     /* ... controller function ... */ 
     }, 
     templateUrl: '/views/partials/directivea.html', 
     restrict: 'E', 
     link: function postLink(scope, element, attrs) { 
     /* ...link function... */ 
     } 
    }; 
    }); 

निर्देशक एक के टेम्पलेट: -

<div> 
    <div class="col-md-12"> 
     <h4>We <strong>Need</strong></h4> 
     <div directive-b some-attribute=="true"></div> 
    </div> 
    <div directive-b some-attribute=="false"></div> 
</div> 

निर्देशक ए के परीक्षण का मामला: -

'use strict'; 

describe('Directive: directiveA', function() { 

    // load the directive's module 
    beforeEach(module('myApp')); 
    beforeEach(module('template-module')); 

    var element, appId, reqResponse, scope, dscope, reqUrl, $httpBackend, $compile; 
    beforeEach(inject(function ($rootScope, _$httpBackend_) { 
     scope = $rootScope.$new(); 
     $httpBackend = _$httpBackend_; 
     appId = "123456"; 
     reqUrl = "https://my-sandbox.app.com/" + appId; 
     reqResponse = {} 
    })); 

    it('should Pass', inject(function (_$compile_) { 

     $httpBackend.expect('GET', reqUrl).respond(reqResponse); 
     $compile = _$compile_; 
     element = angular.element('<directive-a/>'); 
     element = $compile(element)(scope); 
     scope.$digest(); 
     $httpBackend.flush(); 

     dscope = element.scope(); 

     expect(dscope.myVar).toBe(true); 
    })); 

}); 

कर्मा कॉन्फ़िग फ़ाइल: -

// Karma configuration 
// http://karma-runner.github.io/0.12/config/configuration-file.html 
// generator-karma 0.8.2 

module.exports = function(config) { 
    config.set({ 
    autoWatch: true, 
    basePath: '../', 
    frameworks: ['jasmine'], 
    preprocessors: { 
     'app/views/**/*.html': 'html2js' 
    }, 
    ngHtml2JsPreprocessor: { 
     stripPrefix: "app", 
     moduleName: "template-module" 
     }, 

    // list of files/patterns to load in the browser 
    files: [ 
     'bower_components/angular/angular.js', 
     'bower_components/angular-mocks/angular-mocks.js', 
     'bower_components/angular-animate/angular-animate.js', 
     'bower_components/angular-cookies/angular-cookies.js', 
     'bower_components/angular-resource/angular-resource.js', 
     'bower_components/angular-route/angular-route.js', 
     'bower_components/angular-sanitize/angular-sanitize.js', 
     'bower_components/angular-touch/angular-touch.js', 
     'bower_components/angular-strap/dist/angular-strap.min.js', 
     'bower_components/angular-strap/dist/angular-strap.tpl.min.js', 
     'bower_components/ng-file-upload/angular-file-upload-shim.min.js', 
     'bower_components/ng-file-upload/angular-file-upload.js', 
     'bower_components/jquery/dist/jquery.js', 
     'app/scripts/**/*.js', 
     'test/mock/**/*.js', 
     'test/spec/**/*.js', 
     'app/views/**/*.html' 
    ], 

    // list of files/patterns to exclude 
    exclude: ['test/spec/e2e/*'], 

    // web server port 
    port: 8080, 

    browsers: ['PhantomJS'], 

    // Which plugins to enable 
    plugins: [ 
    // 'karma-chrome-launcher', 
     'karma-phantomjs-launcher', 
     'karma-jasmine', 
     'karma-ng-html2js-preprocessor' 
    ], 

    // Continuous Integration mode 
    // if true, it capture browsers, run tests and exit 
    singleRun: false, 

    colors: true, 

    // level of logging 
    // possible values: LOG_DISABLE || LOG_ERROR || LOG_WARN || LOG_INFO || LOG_DEBUG 
    logLevel: config.LOG_INFO 

    // Uncomment the following lines if you are using grunt's server to run the tests 
    //proxies: { 
    // '/': 'http://localhost:9000/' 
    // }, 
    // URL root prevent conflicts with the site root 
    // urlRoot: '_karma_' 
    }); 
}; 

नोट: मैं पहले से ही $ templateCache के लिए html2js उपयोग कर रहा हूँ, और अभी भी मैं इस मुद्दे को मिल रहा है।

उत्तर

6

निर्देश ए का टेम्पलेट यूआरएल /views/partials/directivea.html है। इस कारण यह नहीं है क्योंकि टेम्पलेट पूर्वप्रक्रमक द्वारा कैश में संग्रहीत किया जाता है एक HTTP GET निष्पादित करने के लिए:

ngHtml2JsPreprocessor: { 
    stripPrefix: "app", 
    moduleName: "template-module" 
    } 

लेकिन वहाँ views/partials/directiveb.html के लिए मार डाला GET अनुरोध है। पहले यूआरएल के साथ अंतर ध्यान दें: इसमें अग्रणी / नहीं है। टेम्पलेट कैश में आंशिक के लिए एक प्रविष्टि है, लेकिन कैश में इसका यूआरएल /views/partials/directiveb.html है, views/partials/directiveb.html नहीं।

सुनिश्चित करें कि आप लगातार पूर्ण या सापेक्ष पथ का उपयोग करते हैं, और अपनी पसंद के आधार पर, प्रीप्रोसेसर कॉन्फ़िगरेशन में app उपसर्ग या app/ उपसर्ग को पट्टी करें।

+0

वाह, क्या एक निरीक्षण! मैं सोच रहा था कि मेरे निर्देशों में से केवल एक ही कारण क्यों पैदा कर रहा था, क्योंकि मेरे प्रीप्रोसेसरों में सब कुछ महीनों के लिए पूरी तरह से कॉन्फ़िगर किया गया था। फिर सिर्फ एक प्रतिलिपि/पेस्ट त्रुटि। – SoEzPz

+0

मैंने भी वही गलती की। धन्यवाद, तुमने मुझे बचा लिया! – nikjohn

संबंधित मुद्दे