です。私は多くのスレッドを調査してきましたが、私のエラーに関連するものは何も見つかりませんでした。私は私の角型アプリケーションをテストしようとしている(私はunitTestingにちょっと初心者であることをまず明確にしたい)
this tutorialによれば、私はすべてを設定しており、基本的なテストはうまくいきます。しかし、私がNgMockモジュールを組み込んだとき、私の実際の角型アプリケーションと私のコントローラのメソッドをテストする簡単なテストを書くと、次のstackTraceが得られます。
grunt karma:dev
Running "karma:dev" (karma) task
25 03 2016 20:41:24.754:INFO [karma]: Karma v0.13.22 server started at http://localhost:9876/
25 03 2016 20:41:24.763:INFO [launcher]: Starting browser Chrome
25 03 2016 20:41:24.771:INFO [launcher]: Starting browser Firefox
25 03 2016 20:41:28.747:INFO [Chrome 49.0.2623 (Windows 10 0.0.0)]: Connected on socket /#yRHoLsbEaJWHNtSDAAAA with id 47988329
Chrome 49.0.2623 (Windows 10 0.0.0) Unit tests del CRM: Create new message Should create a text message with the correct structure FAILED
TypeError: $scope.$on is not a function
at new <anonymous> (C:/Users/Pablo/Data/software/workspace/intellij/leadaki-core/public/dashboard/v4/js/controllers/view-conversations.js:248:12)
at e (C:/Users/Pablo/Data/software/workspace/intellij/leadaki-core/public/dashboard/v4/js/angular.min.js:39:156)
at Object.instantiate (C:/Users/Pablo/Data/software/workspace/intellij/leadaki-core/public/dashboard/v4/js/angular.min.js:39:273)
at C:/Users/Pablo/Data/software/workspace/intellij/leadaki-core/public/dashboard/v4/js/angular.min.js:80:228
at C:/Users/Pablo/Data/software/workspace/intellij/leadaki-core/public/dashboard/v4/js/angular-mocks.js:1848:12
at Context.<anonymous> (C:/Users/Pablo/Data/software/workspace/intellij/leadaki-core/test/frontend/leadaki-app-tests.js:44:30)
Chrome 49.0.2623 (Windows 10 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.087 secs/0.024 secs)
Firefox 45.0.0 (Windows 10 0.0.0) Unit tests del CRM: Create new message Should create a text message with the correct structure FAILED
$scope.$on is not a function
@C:/Users/Pablo/Data/software/workspace/intellij/leadaki-core/public/dashboard/v4/js/controllers/view-conversations.js:248:5
[email protected]:/Users/Pablo/Data/software/workspace/intellij/leadaki-core/public/dashboard/v4/js/angular.min.js:39:154
h/<[email protected]:/Users/Pablo/Data/software/workspace/intellij/leadaki-core/public/dashboard/v4/js/angular.min.js:39:273
Xe/this.$get</<@C:/Users/Pablo/Data/software/workspace/intellij/leadaki-core/public/dashboard/v4/js/angular.min.js:80:226
angular.mock.$ControllerDecorator</<@C:/Users/Pablo/Data/software/workspace/intellij/leadaki-core/public/dashboard/v4/js/angular-mocks.js:1848:12
@C:/Users/Pablo/Data/software/workspace/intellij/leadaki-core/test/frontend/leadaki-app-tests.js:44:30
Chrome 49.0.2623 (Windows 10 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.087 secs/0.024 secs)
Firefox 45.0.0 (Windows 10 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.053 secs/0.011 secs)
Warning: Task "karma:dev" failed. Use --force to continue.
Aborted due to warnings.
ngMockが生成する「モック」スコープのように見えますが、リスナーなどを持つことはできません。
誰かがここで間違っているかもしれないというヒントを持っていますか?
私はすべての設定ファイルを貼り付けることができましたが、それはあまりにも多くの情報だと思うし、投稿をあふれさせたくありません。他の情報が必要な場合はお知らせください。追加します。
ありがとうございました!
describe('Unit tests del CRM: ', function() {
before(function() {
if (window.__html__) {
document.body.innerHTML = window.__html__['test/index.html'];
}
});
beforeEach(angular.mock.module('appCliengo'));
var $controller;
var $rootScope;
beforeEach(angular.mock.inject(function(_$rootScope_, _$controller_){
$rootScope = _$rootScope_;
$controller = _$controller_;
}));
describe('Create new message', function() {
it('Should create a text message with the correct structure', function() {
var $scope = {};
var controller = $controller('Contacts.viewConversation', { $scope: $scope });
var messageBody = 'Hola, me gustaria comprar un auto';
var newTextMessage = $scope.createMessage('text/plain', '123456789', 'user', 'abcdefghijk', messageBody);
expect(newTextMessage.body).to.equal(messageBody);
});
});
});
た場合。コードを見ると、変数$ scopeをコントローラの$ scopeパラメータにバインドしています。つまり、$ scope。$を呼び出そうとすると、実際に{}。$を呼び出そうとしていることになります。通訳者はそこに何もないことを正しく伝えます。 $ scope:$ rootScopeを使うか、$ scope = $ rootScope。$ new();を使って$ scopeを実際のスコープオブジェクトにすることができます。 –
ありがとう!今働いている! –