2014-09-04 18 views
8

Ben $ filtrenin döndürdüğü yöntemi spyOn için başka casus ekleyebilir acaba

http://jsfiddle.net/2Ny8x/69/

kodu bakınız ('tarih olarak iç yöntemler angularjs ') Ben Sen denetleyicisi geçirilen filtreyi alay etmek mümkün olmalıdır

expect(something, something).toHaveBeenCalledWith('1234', 'dd-MMM-yyyy'); 

cevap

14

doğrulamak ve bu mock bir casus geri dönebilmek için. Daha sonra casusun normal denildiğini test edebilirsiniz.

Örnek:

describe('MyCtrl', function() { 
    var filter, innerFilterSpy, http, scope; 

    beforeEach(inject(function ($rootScope, $controller, $http) { 
    http = $http; 
    innerFilterSpy = jasmine.createSpy(); 
    filter = jasmine.createSpy().and.returnValue(innerFilterSpy); 
    scope = $rootScope.$new(); 
    controller = $controller('MyCtrl', { 
     '$scope': scope, 
     '$http': http, 
     '$filter': filter 
    }); 
    })); 

    it('call $filter("date") and test()', function() { 
     expect(scope.date).toBe('01-Jan-1970'); 
     expect(http.get).toHaveBeenCalled(); 
     expect(filter).toHaveBeenCalledWith('date'); 
     expect(innerFilterSpy).toHaveBeenCalledWith('1234', 'dd-MMM-yyyy'); 
    }); 
}); 
+0

Bu yardımcı ama bunu kullanarak olmadığı için $ filtreyi enjekte etmek yanıltıcı oluyor işaret etmek istedik. – Alex

+0

Teşekkürler, bunu şimdi kaldırdım. – fiznool