gpt4 book ai didi

angularjs - createSpy 如何在 Angular + Jasmine 中工作?

转载 作者:行者123 更新时间:2023-12-03 08:20:18 25 4
gpt4 key购买 nike

我做了一个工厂的简单演示,我正在尝试使用 来测试它。 Jasmine .我能够运行测试,但我使用的是 spy 方法。我宁愿使用 Jasmine .createSpy jasmine.createSpyObj 做同样的测试。有人可以帮我重构我的代码,以便在我的示例中使用这些方法吗?

http://plnkr.co/edit/zdfYdtWbnQz22nEbl6V8?p=preview

describe('value check',function(){
var $scope,
ctrl,
fac;
beforeEach(function(){
module('app');

});

beforeEach(inject(function($rootScope,$controller,appfactory) {
$scope = $rootScope.$new();
ctrl = $controller('cntrl', {$scope: $scope});
fac=appfactory;
spyOn(fac, 'setValue');
fac.setValue('test abc');
}));


it('test true value',function(){
expect(true).toBeTruthy()
})

it('check message value',function(){
expect($scope.message).toEqual(fac.getValue())
})

it("tracks that the spy was called", function() {
expect(fac.setValue).toHaveBeenCalled();
});

it("tracks all the arguments of its calls", function() {
expect(fac.setValue).toHaveBeenCalledWith('test abc');
});
})

更新
angular.module('app',[]).factory('appfactory',function(){
var data;
var obj={};
obj.getValue=getValue;
obj.setValue=setValue;

return obj;

function getValue(){
return data;
}

function setValue(datavalue){
data=datavalue;
}

}).controller('cntrl',function($scope,appfactory){
appfactory.setValue('test abc');
$scope.message=appfactory.getValue()
})

最佳答案

我已经换了你的 plunkr :

 spy = jasmine.createSpy('spy');

fac.setValue = spy;

编辑

In Jasmine, mocks are referred to as spies. There are two ways to create a spy in Jasmine: spyOn() can only be used when the method already exists on the object, whereas jasmine.createSpy() will return a brand new function.



找到资料 here .该链接包含更多有关创建 spy 的信息。

关于angularjs - createSpy 如何在 Angular + Jasmine 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34556288/

25 4 0
文章推荐: .net - .tt 文件的语法高亮显示?
文章推荐: batch-file - PuTTY/PSFTP 文件传输自动化的批处理文件
文章推荐: validation - 带有提示选项的