使用Jasmine检查函数中的内部变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Jasmine检查函数中的内部变量相关的知识,希望对你有一定的参考价值。
我在AngularJS应用程序中使用Jasmine和Karma进行单元测试。我需要检查控制器功能中内部变量的值。
这是我的控制器。
(function() {
'use strict';
angular
.module('testApp',[])
.controller('testController', testController);
function testController($http, $scope, $timeout) {
var vm = this;
vm.getTestValues = getTestValues;
function getTestValues(){
vm.serverError = undefined;
vm.priceList = [];
$http.get('https://example.com/api/getPrice').then(function(response) {
vm.priceList = response.data;
vm.value = vm.priceList[0].itemValue;
vm.totalValue = vm.value * 10;
}).catch(function(e){
vm.serverError = 'Server Error';
});
}
}
})();
这是我的测试代码
describe('Test Controller', function() {
beforeEach(module('testApp'));
var ctrl;
beforeEach(inject(function($rootScope, $controller){
scope = $rootScope.$new();
ctrl = $controller('testController', { $scope: scope });
}));
describe('vm.value', function() {
it('Should be ', function() {
ctrl.getTestValues();
console.log(ctrl.priceList);
});
});
});
console.log(ctrl.priceList);
打印[]
。
我如何访问vm.priceList
,vm.value
和vm.totalValue
中的值?
答案
$http.get
是一个异步电话。您将不得不使用$httpBackend
对http服务进行单元测试。
您可以浏览以下链接以了解更多信息。
https://docs.angularjs.org/api/ngMock/service/$httpBackend
how to test $http call in angular js?
以上是关于使用Jasmine检查函数中的内部变量的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用 Angular 的 spyOn 的情况下检查服务中的方法是不是在 Jasmine 单元测试中被调用?