背景
DynamoDB data mapper は、annotationなど、ORMな機能が一通りついていて扱いやすいのはよいのですが、
Query,Scanなどのメソッドが QueryIterator(=> AsyncIterator)型で返却され、テストでのMockingを少し考える必要がありました。
以下のコードでシンプルにMockできるので、お役に立てば幸いです。
DynamoDB data mapper
https://github.com/awslabs/dynamodb-data-mapper-js
Mock
import { DataMapper } from '@aws/dynamodb-data-mapper'
describe('test', () => {
beforeEach(() => {
const asyncIteratorMock = new Object()
asyncIteratorMock[Symbol.asyncIterator] = async function*() {
yield 'hoge'
yield 'hage'
yield 'huge'
}
// scanも同じです。
jest.spyOn(DataMapper.prototype, 'query').mockImplementation(() => {
return asyncIteratorMock
})
})
afterEach(() => {
jest.restoreAllMocks()
})
})