karma-ng-html2js-preprocessor not setting the path properly

176 Views Asked by At

I'm testing my statement directive. It has a templateUrl of:

/directives/Statement/statement.directive.html

My app's file structure:

- tango
  - client
    - directives
      - Statement
        - statement.directive.html
  - server
  - test

I'm using Node + Express on the backend and have app.use(express.static('client'));. So the server will see the request for /directives/Statement/statement.directive.html and find it under the client folder.

Previously I wasn't serving static files and had:

templateUrl: /client/directives/Statement/statement.directive.html

At this point, my tests were running fine. However, now that I'm serving things under client statically and and have updated the templateUrl accordingly, my tests are failing. This is the error message I'm getting:

Error: Unexpected request: GET /directives/Statement/statement.directive.html
No more request expected
    at $httpBackend (/Users/azerner/code/tango/test/lib/angular-mocks.js:1211:9)
    at sendReq (/Users/azerner/code/tango/lib/angular.js:10335:9)
    at serverRequest (/Users/azerner/code/tango/lib/angular.js:10047:16)
    at processQueue (/Users/azerner/code/tango/lib/angular.js:14569:28)
    at /Users/azerner/code/tango/lib/angular.js:14585:27
    at Scope.$eval (/Users/azerner/code/tango/lib/angular.js:15848:28)
    at Scope.$digest (/Users/azerner/code/tango/lib/angular.js:15659:31)
    at Object.<anonymous> (/Users/azerner/code/tango/test/unit/directives/statement.directive.js:18:11)
    at Object.invoke (/Users/azerner/code/tango/lib/angular.js:4452:17)
    at Object.workFn (/Users/azerner/code/tango/test/lib/angular-mocks.js:2420:20)
Error: Declaration Location
    at window.inject.angular.mock.inject (/Users/azerner/code/tango/test/lib/angular-mocks.js:2391:25)
    at Suite.<anonymous> (/Users/azerner/code/tango/test/unit/directives/statement.directive.js:7:14)
    at /Users/azerner/code/tango/test/unit/directives/statement.directive.js:1:1
TypeError: Cannot read property 'vm' of undefined
    at Object.<anonymous> (/Users/azerner/code/tango/test/unit/directives/statement.directive.js:22:22)
TypeError: Cannot read property 'statement' of undefined
    at Object.<anonymous> (/Users/azerner/code/tango/test/unit/directives/statement.directive.js:27:14)

I'm using karma-ng-html2js-preprocessor. In karma.conf.js I have:

files: [
  'lib/jquery.js',
  'lib/angular.js',
  'lib/angular-ui-router.min.js',
  'test/lib/angular-mocks.js',
  'client/**/*.html',
  'client/**/*.js',
  'test/unit/**/*.js'
],

ngHtml2JsPreprocessor: {
  moduleName: 'templates',
  cacheIdFromPath: function(filepath) {
    console.log(filepath);
    return filepath;
  },
  stripPrefix: 'client'
},

It's logging out:

client/directives/Statement/statement.directive.html
client/templates/login.html
client/templates/signup.html
client/templates/home.html
client/templates/tango.html

And I'm stripping the client prefix. So I'd think that it should set a key of

/directives/Statement/statement.directive.html

in my $templateCache, and thus the

GET /directives/Statement/statement.directive.html

request should be "intercepted"(?) by $templateCache and this shouldn't be a problem.


What is the problem, and how could I fix it?

0

There are 0 best solutions below