농담에서 스파이를 리셋하거나 클리어하는 방법은?
한 세트에서 여러 테스트에 걸쳐 여러 주장에 사용되는 스파이가 있습니다.
각 테스트에서 스파이가 가로챈 방법이 호출되지 않은 것으로 간주되도록 스파이를 제거하거나 재설정하려면 어떻게 해야 합니까?
예를 들어, 에서 주장을 하는 방법'does not run method'
사실입니까?
const methods = {
run: () => {}
}
const spy = jest.spyOn(methods, 'run')
describe('spy', () => {
it('runs method', () => {
methods.run()
expect(spy).toHaveBeenCalled() //=> true
})
it('does not run method', () => {
// how to make this true?
expect(spy).not.toHaveBeenCalled() //=> false
})
})
답변해주신 @sdgluck님께 감사드립니다만, 저의 경우 동일한 스파이와 여러 번의 테스트를 하기 때문에 매번 테스트 후 명확한 상태를 원한다는 답변을 추가하고 싶습니다.그래서 전화하는 대신에mockClear()
이전 테스트에서, 나는 그것을 안으로 옮겼습니다.afterEach()
(또는 함께 사용할 수 있습니다.beforeEach
) 다음과 같습니다.
afterEach(() => {
jest.clearAllMocks();
});
그리고 마지막으로, 제 시험은 이전 시험에서 스파이를 호출하지 않고도 정상적으로 작동하고 있습니다.그들의 설명서를 읽을 수도 있습니다.
옵션2
글로벌 수준에서 작업을 수행하고 싶다면 업데이트할 수 있습니다.jest.config.js
(또는 출처)package.json
)
module.exports = {
clearMocks: true,
// ...
}
그것에 대한 Jest 문서를 읽을 수 있습니다.
농담 스파이는 가짜와 같은 API를 가지고 있습니다.모조품에 대한 설명서는 여기에 있고 방법을 지정합니다.mockClear
다음 항목:
및 배열에 저장된 모든 정보를 재설정합니다.
두 주장 사이에 있는 모의 사용 데이터를 정리할 때 유용한 경우가 많습니다.
(emphasis 나만의)
그러면 저희가.mockClear
스파이를 reset하기 위해서요예를 들어 다음과 같이 하십시오.
const methods = {
run: () => {}
}
const spy = jest.spyOn(methods, 'run')
describe('spy', () => {
it('runs method', () => {
methods.run()
expect(spy).toHaveBeenCalled() //=> true
/* clean up the spy so future assertions
are unaffected by invocations of the method
in this test */
spy.mockClear()
})
it('does not run method', () => {
expect(spy).not.toHaveBeenCalled() //=> true
})
})
Code Sandbox의 예는 다음과 같습니다.
스파이에 이전에 추가한 메소드의 원래 동작을 복원하려는 경우 mockRestore 메소드를 사용할 수 있습니다.
아래의 예를 확인합니다.
class MyClass {
get myBooleanMethod(): boolean {
return true;
}
}
const myObject = new MyClass();
const mockMyBooleanMethod = jest.spyOn(myObject, 'myBooleanMethod', 'get');
// mock myBooleanMethod to return false
mockMyBooleanMethod.mockReturnValue(false);
// restore myBooleanMethod to its original behavior
mockMyBooleanMethod.mockRestore();
@ghiscoding의 답변을 더 반복하면 다음을 지정할 수 있습니다.clearMocks
Jest config에서, 호출에 해당하는jest.clearAllMocks()
각 테스트 사이:
{
...
clearMocks: true,
...
}
여기 문서를 참조하십시오.
jest.config.js에서 mockReset - not clearMocks를 추가합니다. 이는 테스트 사이의 모의 구현을 제거하지 않기 때문입니다(즉, mockReset이 더 신중한 옵션이며 테스트 사이의 구현을 제거할 것입니다. 제 생각에는 각 테스트가 격리되어야 하므로 이는 올바른 작업입니다).
{
...
mockReset: true,
...
}
언급URL : https://stackoverflow.com/questions/53350382/how-to-reset-or-clear-a-spy-in-jest
'sourcecode' 카테고리의 다른 글
보기 호출기 내부의 조각 바꾸기 (0) | 2023.10.10 |
---|---|
이 Oracle ORA-01403을 처리하는 올바른 방법은 무엇입니까? 데이터를 찾을 수 없음 예외? (0) | 2023.10.10 |
my.ini에서 character_set_database 및 collation_database를 outf8로 설정하는 방법은 무엇입니까? (0) | 2023.10.10 |
python(openpyxl)을 사용하여 Excel에서 그리드 라인 제거 (0) | 2023.10.10 |
부동 소수점 값 27개 집합에서 중위수를 선택하는 가장 빠른 코드 C/C++ (0) | 2023.10.10 |