programing

개인 방법 Jasmine을 사용한 단위 테스트

closeapi 2023. 3. 12. 10:49
반응형

개인 방법 Jasmine을 사용한 단위 테스트

나는 재스민으로 각진 적용 테스트 케이스를 코딩하고 있었다.그러나 서비스에서는 많은 내부 방식이 비공개로 선언됩니다.

예:

App.service('productDisplay', function(){
    var myPrivate = function(){
        //do sth
    }
    this.doOfferCal = function(product, date){
        //call myPrivate
        //do sth too
        return offer;
    }
});

Jasmine을 사용하면 "doOfferCal" 코드 테스트가 간단하지만 myPrivate에도 유닛 테스트를 쓰고 싶습니다.

어떻게 해야 하죠?

잘 부탁드립니다.

고마워 Jabko87

또한 인수를 전달하려면 다음 예를 사용합니다.

const myPrivateSpy = spyOn<any>(service, 'transformNative').and.callThrough();
 myPrivateSpy.call(service, {name: 'PR'});

참고: 여기 서비스는 클래스, transformNative는 개인 메서드, {name: 'PR'}은(는) 개체 인수를 전달합니다.

개인 방법을 테스트하려는 특별한 이유가 있습니까?

테스트에 의한doOfferCal()암묵적으로 테스트하고 있습니다.myPrivate()옳은 일을 하고 있는 거야

이것은 Rails Conf를 위한 것이지만, Sandi Metz는 무엇을 테스트해야 하는지에 대해 매우 좋은 이야기를 하고 있습니다.

Achan은 100% 옳습니다만, 테스트에서 프라이빗 메서드를 호출할 필요가 있는 경우는, 다음과 같이 실시할 수 있습니다.

var myPrivateSpy = spyOn(productDisplayService, "myPrivate").and.callThrough();
myPrivateSpy.call();

개인 메서드를 호출하려면 다음과 같이 해야 합니다.

component["thePrivateMethodName"](parameters);

어디에component는 서비스 클래스 또는 컴포넌트 클래스입니다.

내부 기능을 테스트하기 위해 내부 기능을 호출하는 외부 함수를 호출하고 내부 기능이 요구하는 것에 따라 입력을 변경합니다.그래서, 당신의 경우엔productDisplay그리고 무엇을 기준으로 입력 내용을 변화시킵니다.myPrivate니즈를 검출한 후 예상되는 출력이 있는지 확인합니다.또, 감시할 수도 있습니다.myPrivate그런 식으로 테스트하고.havebeencalledwith또는.andcallthrough.

언급URL : https://stackoverflow.com/questions/17885635/private-method-unit-testing-with-jasmine

반응형