I try to test the code below:
describe('myService test', function () {
describe('when I call myService.one', function () {
beforeEach(angular.module('TargetMarketServices'));
it('returns 1', inject(function (imagesRepository) {
expect(true).toEqual(true);
}));
});
});
When this code is executed I get this error:
TypeError: 'undefined' is not a function (evaluating 'this.func.apply(this.spec)')
at http://localhost:8080/testacular.js:76
at http://localhost:8080/context.html:35
ReferenceError: Can't find variable: inject
at /home/peter/Dropbox/AngularJS/set-component/test/sets/sets-ihm.js:6
at /home/peter/Dropbox/AngularJS/set-component/test/sets/sets-ihm.js:8
at /home/peter/Dropbox/AngularJS/set-component/test/sets/sets-ihm.js:10
PhantomJS 1.8: Executed 1 of 3 (1 FAILED) (skipped 2) (0.072 secs / 0.01 secs)
For my test, I use Testacular with Jasmine and PhantomJS.
AngularJS provides two testing libraries:
angular-mocks is used for Jasmine and Karma testing. It publishes global methods module() and inject() to be used in your Jasmine spec tests. This means you must load the angular-mocks.js script (after you load the angular.js library/script)
angular-scenario is only used for e2e testing.
The line where you have
beforeEach(angular.module('TargetMarketServices'));
should be
beforeEach(module('TargetMarketServices'));
If you take a look at the angular-phonecat project in test/unit/directivesSpec.js it uses
beforeEach(module('myApp.directives'));
If I modify it to use angular.module instead:
beforeEach(angular.module('myApp.directives'));
then I get this error when running testacular also:
TypeError: 'undefined' is not a function (evaluating 'this.func.apply(this.spec)')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With