Jasmine Test:如何在AngularJS中模拟控制器内的方法
发布时间:2020-12-17 17:57:54 所属栏目:安全 来源:网络整理
导读:我正在使用 angularjs,我的控制器看起来像这样: (function (app) {var myController = function ($scope,myService) { var onData = function (response) { if (!response.data || response.data.length === 0) { app.showErrorMessage('Error'); } else {
我正在使用
angularjs,我的控制器看起来像这样:
(function (app) { var myController = function ($scope,myService) { var onData = function (response) { if (!response.data || response.data.length === 0) { app.showErrorMessage('Error'); } else { $scope.myData = response.data; drawChart(); } $scope.loading = false; }; var init = function () { $scope.loading = true; myService.getContBreakdown().then(onData,onError); }; var drawChart = function () { // Some Code }; init(); }; app.controller('myController',['$scope','myService',myController]); }(angular.module('app'))); 我正在编写一个jasmine测试套件来测试从myService接收的数据,并模拟对drawChart()方法的调用.我应该如何编写一个简单的茉莉花测试套件来模拟对drawChart()方法的调用? 解决方法
您的方法应该在$scope中.
它应该看起来像这样: 在您的控制器中: ... $scope.methodToTest = function () { ... $scope.methodToMock(); ... } $scope.methodToMock = function () { // do something } ... 在你的测试中: ... describe( 'methodToTest',function () { it( 'should call the methodToMock',function() { spyOn( $scope,'methodToMock' ); $scope.methodToTest(); expect( $scope.methodToMock ).toHaveBeenCalled(); } ); } ); ... 也许这也可以帮到你: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |