2014-09-28 1 views
0

나는 브라우저 폭을 얻을 수있는 기능을 제공하기 위해 requirejs 모듈을 정의

define(['jquery'], function($) { 
    return { 
     getBrowserWidth: function() { 
      return $(window).width(); 
     } 
    } 
}); 

지금 나는 그것을 위해 단위 테스트를 작성하려면

browserTool.js을, 그래서 나는 jquery을 조롱하려는 :

define(['jquery', 'browserTool'], function(jquery, browserTool) { 
    describe("test", function() { 
     it("should do something", function() { 
     spyOn(jquery, "apply").and.returnValue({ 
      width: function() { return 300; } 
     }); 
     expect(browserTool.getBrowserWidth()).toEqual(300); 
     }); 
    }); 
}); 

당신은 내가 사용하려는 볼 수 있습니다 spyOn(jquery, "apply") 조롱하는,하지만 작동하지 않습니다이 테스트는, 내가 잘못된 방법 염탐 보인다.

문제를 해결하는 방법은 무엇입니까?

답변

1

매번 다른 객체를 반환하기 때문에 jQuery 선택기에서 직접 스파이 활동을 할 수 없습니다. Jasmine SpyOn의 일반적인 트릭은 스파이를 프로토 타입에 배치하는 것입니다. jQuery로는 다음과 같습니다

//spyOn $(window).width(): 
spyOn($.fn, 'width'). 

당신이, 당신은 스파이 호출의 인수에서 PARAMS을 추출 할 수 있습니다 (그 예를 볼이 창을 불렀다.)를 선택합니다. 적용에 관해서는

: 적용은 순수 자바 스크립트 방법, jQuery를의 일부입니다, 그래서 당신은 아마 속해있는 함수 프로토 타입을 통해 감시 할 수

spyOn(Function.prototype, 'apply'); 

(나는 이것을 시도하지 않았다 코드)

관련 문제