Ich machte eine einfache Demo einer Fabrik und ich versuche, dies unter Verwendung Jasmin zu testen. Ich bin in der Lage, den Test zu starten, aber ich verwende die spyOn Methode. Ich würde lieber jasmine.createSpy oder jasmine.createSpyObj verwenden, um den gleichen Test zu machen. Könnte jemand mir helfen, meinen Code umzuformen, so dass diese Methoden stattdessen in meinem Beispiel verwendet werden?Wie funktioniert der createSpy in Angular + Jasmine?
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');
});
})
Update
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()
})
Was versuchen Sie zu erreichen? Außer dem zweiten 'it()' testen alle anderen Ihren Code nicht: Sie testen nur, dass Jasmine wie dokumentiert funktioniert. –
Ich versuche meine Fabrik zu testen .. !! Ich möchte meine Fabrik mit Spyon testen und jasmine.creatspy verwenden – user944513
Wenn das Ziel ist, den Dienst zu testen, müssen Sie keinen Controller erstellen. Inject den Dienst, rufen Sie seine Methoden auf und überprüfen Sie, dass sie tun, was sie tun sollen. Sie brauchen keinen Spion, es sei denn, der Dienst, den Sie testen, hängt von anderen Diensten ab, die Sie spionieren/spionieren möchten. –