私は内部のコールバックを持つコントローラを持っている:AngularJSでコントローラを約束した後、単体テストを行う方法は?
angular.module('controllers').controller('headerController', headerController);
function headerController(headerService) {
var self = this;
headerService.getHeaderContentData()
.then(function(response) {
self.contentData = response.content;
});
}
私の問題は、私はユニットテストでcontentData
の値をチェックする必要があるということです。私がexpect(ctrl.contentData).to.be.defined
に電話をしたときに、そのテストに合格したのですが、ctrl.contentData
の値はundefined
です。この動作をテストする方法はありますか(コールバックが発生したときにself.contentDataをテストする)?
現在のユニットテスト:あなたのコントローラが$hhtp
を使用していないので
describe("controller", function() {
var controller, $httpBackend;
beforeEach(angular.mock.inject(function($injector, _$httpBackend_){
var $controller = $injector.get('$controller');
$httpBackend = _$httpBackend_;
var $scope = {};
$httpBackend.when('GET', '/data/header.content.json')
.respond(require('../../mock-data/header.content.json'));
var controller = $controller('headerController', { $scope: $scope });
$httpBackend.flush();
}));
it("should have contentData property populated", function() {
expect(controller.contentData).to.exist; // <- here fails: current value is undefined
});
});
私のユニットテストフレームワークは、ジャスミン
を参照してください。コントローラを変更する必要がありますか? –
'angular.mock.module( 'controllers')'おそらくこの行がありません! –