1
나는 범위 내에서 메서드가 호출 된 경우 테스트의 (아래 참조) 사양재스민 테스트가 실패
가describe("Event Module tests", function() {
var scope, simpleController;
beforeEach(module('SimpleApplication'));
beforeEach(inject(function ($rootScope, $controller) {
scope = $rootScope.$new();
simpleController = $controller("SimpleController", {
$scope: scope
});
}));
it("Scope function should be triggered", function() {
spyOn(scope, "trigger");
scope.trigger();//invoke the function on controller
expect(scope.trigger).toHaveBeenCalled();//Passes
expect(scope.isTriggered).toBeTruthy();//Fails
});
});
응용 프로그램 코드 (코드 테스트 할)이 있습니다
angular
.module("SimpleApplication", [])
.controller("SimpleController", function ($scope) {
$scope.message = "Hello World";
$scope.isTriggered = false;
$scope.trigger = function() {
$scope.isTriggered = true;
};
});
재스민 "진실이라고 거짓 될 것으로 예상했다." 어째서? 그 방법은 그것을 사실로 설정했기 때문에 !!
업데이트 : 어떤 이유
이 SpyOn 그것이 의도 된 것이 내 목적을 돌연변이했다. 따라서 코드 조각 아래에서 좋은 결과를 얻을 수 있습니다.
it("Scope function should be triggered", function() {
scope.trigger();//invoke the function on controller
expect(scope.isTriggered).toBeTruthy();//Now Passes
});
여기에 잘못된 사람이 있을지는 모르겠지만 Chrome이나 Firefox와 같은 브라우저에서 단위 테스트를 실행할 수 있다는 것을 알고 계셨습니까? 코드를 단계별로 실행하여 수행중인 작업을 확인하십시오. 명령 줄에서 Karma를 실행하고 브라우저에서 디버거를 사용하여이 작업을 수행 할 수 있습니다. –
@ DavidM.Karr 어떤 식 으로든 다른 제안에 의해 저에게 답을 얻을 수 있습니다. 'Spyon'이 내 '방아쇠'기능에 돌연변이를 일으키고 있었으므로 실제로 원하는대로하지 못했습니다. 그래서 그 코드 조각이 제거되었습니다. – Deeptechtons