https://github.com/kenfdev/stepfunctions-testing
Step Functions testing library.
https://github.com/kenfdev/stepfunctions-testing
Last synced: 6 months ago
JSON representation
Step Functions testing library.
- Host: GitHub
- URL: https://github.com/kenfdev/stepfunctions-testing
- Owner: kenfdev
- License: mit
- Created: 2022-02-22T04:58:45.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2023-12-15T05:30:12.000Z (over 2 years ago)
- Last Synced: 2025-04-14T19:07:38.956Z (12 months ago)
- Language: TypeScript
- Size: 11.7 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Step Functions Testing Library
## Features
- Create a [MockConfigFile](https://docs.aws.amazon.com/step-functions/latest/dg/sfn-local-test-sm-exec.html) with JavaScript
### Install
```sh
npm i stepfunctions-testing
```
## Usage
### Creating a mocked response
#### `Return` a response
```js
const checkIdentityLambdaMockedSuccess = new MockedResponse(
'CheckIdentityLambdaMockedSuccess'
).return({
StatusCode: 200,
Payload: {
statusCode: 200,
body: JSON.stringify({
approved: true,
message: 'identity validation passed',
}),
},
});
```
#### `Throw` a response
```js
const checkIdentityLambdaMockedThrowError = new MockedResponse(
'CheckIdentityLambdaMockedThrowError'
).throw('CustomValidationError', 'Check Identity Validation Failed');
```
#### Repeating responses
```js
const checkIdentityLambdaMockedThrowError = new MockedResponse(
'CheckIdentityLambdaMockedThrowError'
).throw('CustomValidationError', 'Check Identity Validation Failed', /* repeat the response 3 times. total becomes 4 */ 3);
```
### Full example
```js
// Create mocked responses
const checkIdentityLambdaMockedSuccess = new MockedResponse(
'CheckIdentityLambdaMockedSuccess'
).return({
StatusCode: 200,
Payload: {
statusCode: 200,
body: JSON.stringify({
approved: true,
message: 'identity validation passed',
}),
},
});
const checkAddressLambdaMockedSuccess = new MockedResponse(
'CheckAddressLambdaMockedSuccess'
).return({
StatusCode: 200,
Payload: {
statusCode: 200,
body: JSON.stringify({
approved: true,
message: 'address validation passed',
}),
},
});
// Create a state machine test definition
const stateMachineTestDefinition = new StateMachineTestDefinition('SomeStateMachineName')
.addTestCase(
new StateMachineTestCase('HappyPathTest')
.withInput(input)
.addMockedState(
'CheckIdentity',
checkIdentityLambdaMockedSuccess
)
.addMockedState(
'CheckAddress',
checkAddressLambdaMockedSuccess
)
);
// Create a config
const config = new StepFunctionsMockConfig()
.addTestDefinition(stateMachineTestDefinition);
// Convert the config object to JSON
// You can write this down to a file to be used by step functions local
config.toJSON();
```
## License
stepfunctions-testing is available under the terms of [MIT License](./LICENSE)