Buradaki şey şu. Birçok iş parçacığı araştırıyordum ancak hatam ile ilgili hiçbir şey bulamadım. Açısal uygulamamı test etmeye çalışıyorum, (ilk önce ben unitTesting için yeni olduğumu açıklığa kavuşturmak istiyorum)
this tutorial'a göre herşeyi ayarlıyorum ve temel testler iyi çalışıyor. Ama ben NgMock modülünü dahil ettiğimde, gerçek açısal uygulamam ve denetleyicilerden birinde bir yöntemi test etmek için basit bir test yazdığımda aşağıdaki stackTrace'i elde ederim.
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.
O ngMock böyle dinleyici veya bir şey var kabul etmez üretir "sahte" kapsam gibi görünüyor.
Burada herhangi bir sorun olabilir mi?
Tüm yapılandırma dosyalarımı yapıştırabilirim ama bence bu çok fazla bilgi ve yazıyı sel basmak istemiyorum. Başka bilgi gerekirse bana bildirin ve ekleyeceğim.
Teşekkürler!
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);
});
});
});
edin. koda bakarsanız, $ scope değişkenini denetleyicinizin $ scope parametresine bağlarsınız. Bunun anlamı, $ scope. $ Olarak adlandırmayı denediğinizde, gerçekten {}. Tercüman, orada hiçbir şey olmadığını doğru bir şekilde söyler. $ Scope: $ rootScope'u kullanabilir veya $ kapsamını gerçek kapsam nesnesini kullanarak yapabilirsiniz: $ scope = $ rootScope. $ New(); –
Teşekkürler! Şuan çalışıyor! –