我試圖驗證一個函數被點擊鏈接後調用。在Jasmine測試中用jQuery調用點擊,但看起來範圍與測試中的控制器不同。在這種情況下我怎樣才能使測試工作?有問題的代碼可以在http://plnkr.co/edit/yqKme59WD9isrZTCutKB?p=preview找到。如何間諜控制器的功能,由用戶界面點擊的鏈接調用?
describe('Testing a Hello World controller', function() {
var $scope;
var ctrl;
//you need to indicate your module in a test
beforeEach(module('plunker'));
beforeEach(inject(function($rootScope, $controller) {
$scope = $rootScope.$new();
ctrl = $controller('MainCtrl as mc', {
$scope: $scope
});
spyOn(ctrl, 'loadData').and.callThrough();
}));
it('should call load data', function() {
ctrl.loadData();
console.log("1:" + ctrl.name);
expect(ctrl.loadData).toHaveBeenCalled();
});
it('should call load data after link cliked', function() {
$('#change-name')[0].click();
console.log("2:" + ctrl.name);
expect(ctrl.loadData).toHaveBeenCalled();
});
});
模板確實與控制器無關,所以我只是直接通過調用它來測試控制器功能。對於你的測試,假裝模板不存在,只是測試控制器的API – Phil
這裏是我的意思的例子〜http://plnkr.co/edit/4MsnnrWllcNdLBvqpKdr?p=preview – Phil
有沒有辦法弄到該模板使用的控制器或範圍?我只希望我能驗證由UI事件引起的這種狀態變化。 – barryku