홈>
Jasmine으로 테스트 중이며 스파이 구현을 발견했습니다.
이 코드는 다음과 같습니다.
describe("A spy", function() {
let foo;
let bar = null;
beforeEach(function() {
foo = {
setBar: function(value) {
bar = value;
}
};
spyOn(foo, 'setBar');
foo.setBar(123);
foo.setBar(456, 'another param');
console.log(bar)
});
it("tracks all the arguments of its calls", function() {
expect(foo.setBar).toHaveBeenCalledWith(123);
expect(foo.setBar).toHaveBeenCalledWith(456, 'another param');
expect(bar).toBeNull(); /* Why is this NULL it should be 456 because it the last value we called our function with!!!*/
});
});
이 의견을 추가했습니다
/* Why is this NULL it should be 456 !!!*/
내가 이해하지 못하는 것을 명확히하기 위해.
이 코드 때문에 :
let bar1 = null
let foo1 = {
setBar: function(value) {
bar1 = value;
}
}
foo1.setBar(123);
foo1.setBar(456, 'another param');
console.log(bar1) // 456
프린트
456
.
- 답변 # 1
관련 자료
- set - 다음과 같은 경우 여러 개를 사용하지 않고 변수를 다른 값으로 변경하는 방법 - 문장 파이썬
- go - 구조 값은 for 루프 범위로 변경되지 않습니다
- html - JavaScript에서 결과를 표시 한 후 변수의 글꼴 색상을 변경하는 방법은 무엇입니까?
- wordpress - PHP If else 문으로 div 배경색을 변경하는 PHP 변수에 대한 JS 값
- javascript - x-for 변수의 값을 테스트하고 값에 따라 CSS 스타일을 변경하는 방법은 무엇입니까?
- jquery - $get 후에 부트 스트랩 4 모달이 제대로 작동하지 않습니다
- python - 중첩 된 사전에서 값을 변경하면 어떤 메서드가 호출됩니까?
- javascript - 배열의 특정 값을 변경하고 배열이 비어 있습니다
- flutter - DateTimeadd 메서드는 dart의 연도 필드를 변경하지 않습니다
- vue.js - laravel html lang 변수 변경
- 다른 변수가 변경 될 때마다 클래스의 한 변수를 어떻게 변경할 수 있습니까? 파이썬
- javascript - 정렬 기능은 두 번째 변경 이벤트 이후에만 활성화됩니다
- c - 반환 전후의 다른 포인터 값
- python 3.x - Pandas의 다른 탭에서 일치에 따라 값 변경
- mysql - 값 변경시 선택
- drupal - $form_state-> set (), $form_state-> setValue ()는 새 값을 저장하지 않습니다
- sql server - 다른 테이블에 새 행을 삽입 한 후 테이블 값을 업데이트하도록 트리거
- 애니메이션 후 신속한 변경보기
- reactjs - React에서 입력 값을 변경할 수없는 이유는 무엇입니까?
- javascript - 변수 값에 저장되지 않음을 줄입니다
트렌드
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- JavaScript 변수를 HTML div에 '출력'하는 방법
- python - 문자열에서 특정 문자 제거
spyOn
를 활성화 한 경우 함수 (여기서 foo.setBar)가 호출되면 기본적으로 jasmine은 실제 함수를 호출하지 않고 세부 정보 만 추적합니다.실제 함수를 호출하려면
spyOn(foo, 'setBar').and.callThrough();
를 지정해야합니다 그냥spyOn(foo, 'setBar')
대신 .그 후에
expect(bar).toBeNull()
를 관찰 할 수 있습니다 실패하고expect(bar).toBe(456)
성공할 것이다.