Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shisama/vuex-snapshot-test
Snapshot testing library for Vuex.
https://github.com/shisama/vuex-snapshot-test
action-testing mutation-testing snapshot snapshot-store snapshot-testing testing vue vuex vuex-test
Last synced: about 9 hours ago
JSON representation
Snapshot testing library for Vuex.
- Host: GitHub
- URL: https://github.com/shisama/vuex-snapshot-test
- Owner: shisama
- License: mit
- Created: 2019-02-02T14:57:06.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-11-18T19:57:57.000Z (about 22 hours ago)
- Last Synced: 2024-11-18T20:54:33.949Z (about 22 hours ago)
- Topics: action-testing, mutation-testing, snapshot, snapshot-store, snapshot-testing, testing, vue, vuex, vuex-test
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/vuex-snapshot-test
- Size: 292 KB
- Stars: 5
- Watchers: 3
- Forks: 0
- Open Issues: 34
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# vuex-snapshot-test
[![Build Status](https://travis-ci.org/shisama/vuex-snapshot-test.svg?branch=master)](https://travis-ci.org/shisama/vuex-snapshot-test)
[![npm version](https://badge.fury.io/js/vuex-snapshot-test.svg)](https://badge.fury.io/js/vuex-snapshot-test)
Snapshot testing library for Vuex.
Inspired by [reducer-tester](https://github.com/akameco/reducer-tester).## TL;DR
Test Code
```js
import snapshot from "vuex-snapshot-test";
import store from "@/store";snapshot({
store, // state: 0
dispatches: [dispatch => dispatch("increment")]
});
```Snapshot
```diff
exports[`increment 1`] = `
"Snapshot Diff:
- Before
+ AfterObject {
\\"counter\\": Object {
- \\"value\\": 0,
+ \\"value\\": 1,
},
}"
`;
```## Install
```
npm install --save-dev vuex-snapshot-test
```or
```
yarn add --dev vuex-snapshot-test
```## Usage
Vuex Store
```js
// store.js
import Vue from "vue";
import Vuex from "vuex";Vue.use(Vuex);
const state = {
counter: {
value: 1
}
};const mutations = {
increment: state => state.counter.value++,
decrement: state => state.counter.value--,
multiply: (state, payload) => {
state.counter.value = state.counter.value * payload.num;
}
};const actions = {
increment: ({ commit }) => commit("increment"),
decrement: ({ commit }) => commit("decrement"),
multiply: ({ commit }, num) =>
commit("multiply", {
num
})
};
const store = new Vuex.Store({
state,
mutations,
actions
});
```Test Code
```js
// store.test.js
import snapshot from "vuex-snapshot-test";
import store from "@/store";describe("test_describe", () => {
// pass state, mutations, and tests parameters.
snapshot({
state: {
counter: {
value: 1
}
},
mutations,
tests: [
{
type: "increment"
},
{
type: "multiply",
num: 5
}
]
});// pass store and dispatches parameters.
snapshot({
store,
dispatches: [
dispatch => dispatch("increment"),
dispatch => dispatch("multiply", 5)
]
});// pass store and commits parameters.
snapshot({
store,
commits: [
commit => commit("increment"),
commit => commit("decrement"),
commit => commit("multiply", { num: 5 })
]
});
});```
Snapshot
```diff
exports[`test_describe decrement 1`] = `
"Snapshot Diff:
- Before
+ AfterObject {
\\"counter\\": Object {
- \\"value\\": 1,
+ \\"value\\": 0,
},
}"
`;exports[`test_describe increment 1`] = `
"Snapshot Diff:
- Before
+ AfterObject {
\\"counter\\": Object {
- \\"value\\": 1,
+ \\"value\\": 2,
},
}"
`;exports[`test_describe increment 2`] = `
"Snapshot Diff:
- Before
+ AfterObject {
\\"counter\\": Object {
- \\"value\\": 1,
+ \\"value\\": 2,
},
}"
`;exports[`test_describe increment 3`] = `
"Snapshot Diff:
- Before
+ AfterObject {
\\"counter\\": Object {
- \\"value\\": 1,
+ \\"value\\": 2,
},
}"
`;exports[`test_describe multiply 1`] = `
"Snapshot Diff:
- Before
+ AfterObject {
\\"counter\\": Object {
- \\"value\\": 1,
+ \\"value\\": 5,
},
}"
`;exports[`test_describe multiply 2`] = `
"Snapshot Diff:
- Before
+ AfterObject {
\\"counter\\": Object {
- \\"value\\": 1,
+ \\"value\\": 5,
},
}"
`;exports[`test_describe multiply 3`] = `
"Snapshot Diff:
- Before
+ AfterObject {
\\"counter\\": Object {
- \\"value\\": 1,
+ \\"value\\": 5,
},
}"
`;
```## Contributing
Issues and Pull requests are welcome ;)## License
This project is licensed under the terms of the
[MIT license](./LICENSE)