2014-06-18 2 views
10

라우터를 테스트 중이며 두 가지 기능이 있습니다. 첫 번째 기능이 호출되고 두 번째 기능이 호출되지 않았는지 테스트해야합니다. toHaveBeenCalled 메서드가 있지만 함수가 호출되지 않았는지 테스트 할 메서드가 없습니다. 어떻게 테스트 할 수 있습니까?기능이 호출되지 않았는지 어떻게 테스트 할 수 있습니까?

나는이 같은 코드가 있습니다

var args, controller, router; 
beforeEach(function() { 
    controller = { 
     foo: function(name, id) { 
      args = [].slice.call(arguments); 
     }, 
     bar: function(name) { 
     } 
    }; 
    spyOn(controller, "foo").and.callThrough(); 
    spyOn(controller, "bar").and.callThrough(); 
    router = new route(); 
    router.match('/foo/bar/{{id}}--{{name}}', controller.foo); 
    router.match('/foo/baz/{{id}}--{{name}}', controller.bar); 
    router.exec('/foo/bar/10--hello'); 
}); 
it('foo route shuld be called', function() { 
    expect(controller.foo).toHaveBeenCalled(); 
}); 
it('bar route shoud not be called', function() { 
    // how to test if bar was not called? 
}); 

답변

17

사용 not 운영자 :

expect(controller.bar).not.toHaveBeenCalled(); 
관련 문제