Я пытаюсь написать модульные тесты для класса TypeScript, который вызывает DynamoDb.Это то, что у меня так далеко.
import {DataMapper, QueryIterator} from '@aws/dynamodb-data-mapper';
import DynamoDB = require("aws-sdk/clients/dynamodb");
jest.mock("aws-sdk/clients/dynamodb");
jest.mock("@aws/dynamodb-data-mapper");
describe("queryDynamoDb", () => {
let myRepository = new MyRepository();
const mockQueryCall = jest.fn();
DataMapper.prototype.query = mockQueryCall;
test("queriesDynamoDb", async () => {
const mockQueryIterator = <jest.Mock<QueryIterator<DataObject>>>QueryIterator;
mockQueryIterator.prototype.next.mockReturnValueOnce(getExpectedReturnObjectsValues())
mockQueryCall.mockReturnValue(mockQueryIterator);
let responseObjects = await myRepository.queryDynamoDb(testIdString);
// Validate response Objects
})
});
Метод перебирает ответ с циклом for ..., поэтому мне нужна функция .next для возврата.
Чтобы протестировать тест, я добавил console.log(await queryIterator.next());
к моей функции запроса dynamicoDb.
Но когда я пытаюсь запустить его, ответом будет:
TypeError: queryIterator.next не является функцией
в этой строке журнала.
Итак, очевидно, что mockQueryCall.mockReturnValue(mockQueryIterator);
либо не выполняет свою работу и не возвращает мой mockQueryIterator, либо const mockQueryIterator = <jest.Mock<QueryIterator<DataObject>>>QueryIterator;
неправильно применяет тип к mockQueryIterator.Но я не знаю, как исправить любую из этих вещей.