Строка, не охваченная, - это обратный вызов успеха, переданный then
.
. Ваш макет заменяет then
функцией, которая не принимает никаких параметров и просто возвращает объект.Обратный вызов из вашего кода передается на макет then
во время теста, но он не вызывает обратный вызов, поэтому Jest
правильно сообщает, что обратный вызов не охватывается вашими тестами.
Вместо попыткиверните фиктивный объект, который выглядит как Promise
, просто верните фактическое разрешение Promise
из вашего макета:
const stubAwsRequestWithFakeArrayReturn = () => ({
promise: () => Promise.resolve({ Items: 'fake-value' })
});
... таким образом then
все равно будетфактический Promise.prototype.then
и ваш обратный вызов будет вызван, как и ожидалось.
Вы должны также await
возвращенный Promise
, чтобы убедиться, что обратный вызов был вызван дотест завершен:
it(`should call docClient.scan() at least once`, async () => {
const mockAwsCall = jest.fn().mockImplementation(stubAwsRequest);
aws.docClient.scan = mockAwsCall;
await db.list('fake-table'); // await the Promise
expect(mockAwsCall).toBeCalledTimes(1);
});
it(`should call docClient.scan() with the proper params`, async () => {
const mockAwsCall = jest.fn().mockImplementation(stubAwsRequest);
aws.docClient.scan = mockAwsCall;
await db.list('fake-table'); // await the Promise
expect(mockAwsCall).toBeCalledWith({
TableName: 'fake-table',
});
});