여러 데이터를 순서에 맞게 모킹해야 할 때
let count = 0;
count++;
if(count === 1) return 'foo';
if(count === 2) ...
JavaScript
복사
generator 사용
class MockRequester {
private gen: Generator;
constructor() {
this.gen = this.generateId();
}
request() {
return this.gen.next().value;
}
private *generateId() {
const sha1 = uuidv4();
const sha2 = uuidv4();
yield sha1;
yield sha1;
yield sha2;
}
}
TypeScript
복사
jest 사용
const MockRequester = mock<Requester>({
request: jest
.fn()
.mockResolvedValueOnce({ id: uuidv4() })
.mockResolvedValueOnce({ id: uuidv4() })
.mockResolvedValue({ id: uuidv4() })
})
JavaScript
복사
덤으로 jest.fn 으로 목킹하면 목함수 expect 도 가능
expect(reqesuter.request).toBeCallTimedTimes(1);//몇번 호출되었냐
expect(reqesuter.request).toBeCalledWith({ parameter: { a: "b" }});//어떤 파라미터로 호출되었냐
expect(reqesuter.request).toBeCalledNth~~(0,{ parameter: { a: "b" }});//몇번째 호출되었을때 검증
Plain Text
복사