2014-06-18 34 views
10

Yönelticiyi test ediyorum ve iki fonksiyona sahibim ve ilk fonksiyonun çağrılıp çağrılmadığını test etmem gerekiyor. toHaveBeenCalled yöntemi vardır, ancak işlevin çağrılmadığını sınamak için bir yöntem yoktur. Bunu nasıl test edebilirim?Fonksiyon çağrılmadığında nasıl test edebilirim?

bu gibi bir kod vardır:

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? 
}); 

cevap

17

Kullanım not operatörü:

expect(controller.bar).not.toHaveBeenCalled(); 
İlgili konular