@specifai-net/appsync-template-tester
Version:
Unit test AppSync VTL resolvers, with popular frameworks such as Jest
61 lines (44 loc) • 2.6 kB
Markdown
[](https://www.typescriptlang.org/)
[](https://www.npmjs.com/package/appsync-template-tester)
 
Unit test AppSync VTL resolvers, with popular frameworks such as Jest.
```shell
yarn add appsync-template-tester --dev
```
```typescript
import Parser from 'appsync-template-tester';
import { readFileSync } from 'fs';
import { join } from 'path';
// Load from a file (if not in a string already)
const templateFilePath = join(__dirname, './pathToFile.vtl');
const template = readFileSync(templateFilePath, {
encoding: 'utf8',
});
// Create the resolver
const parser = new Parser(template);
test('Test the resolver', () => {
// The Appsync Context (ctx) object
const context = {
// For example with a dynamoDB response resolver:
result: {
id: 'testId',
// ...
},
};
// parser.resolve() automatically typecasts (note JSON becomes a JS object for ease of testing)
const response = parser.resolve(context);
// For convenience, the response is returned as a JS object rather than JSON
expect(response.id).toBe('testId');
});
```
This module supports all the provided core, map & time \$util methods, and most of the dynamodb methods. The underlying methods can be seen in the [Resolver Mapping Template Utility Reference
docs](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-util-reference.html).
Note: The errors list is also not returned (but \$util.error will throw an error).
## Built by Skyhook
This module is contributed by the team at [Skyhook](https://www.skyhookadventure.com/).
And extended by [SpecifAI](https://specifai.net/) for internal use of testing AppSync, but it should be useable for everyone using AppSync and wants to test the VTL templates. We switched from [Amplify-appsync-simulator](https://github.com/aws-amplify/amplify-cli/tree/master/packages/amplify-appsync-simulator) to this package because the simulator needs more setting up, which is to extensive for just unittesting. The package from Skyhook lacked some support see (https://github.com/skyhookadventure/appsync-template-tester/issues/17) and therefore we added support by merging code based on (https://github.com/aws-amplify/amplify-cli/tree/master/packages/amplify-appsync-simulator/src/velocity)