[这是一个Vue应用,使用Vuex,使用vue-cli创建,使用mocha、chai、karma、sinon]
我正在尝试为我的 vuex 状态创建测试,我不想使用模拟——我对这些测试的一大目标是同时测试数据来自的 API。
我正在尝试遵循 chai-as-promised 的文档。
这是我要测试的 vuex 操作的简化:
const actions = {
login: (context, payload) => {
context.commit('setFlashMessage', "");
axios.get("https://first-api-call")
.then((response) => {
axios.post("https://second-api-call")
.then((response) => {
router.push({ name: "Home"});
context.commit('setFlashMessage', "Logged in successfully");
context.commit('setLogin', response.data);
});
},
请注意,登录操作有两个承诺,并且不返回任何内容。登录操作做了两件事:设置一些状态并更改路由。
我看到的使用 chai-as-promised 的示例期望返回承诺。那是:
var result = systemUnderTest();
return expect(result).to.eventually.equal(blah);
但就我而言, login() 不返回任何内容,我不确定如果返回我会返回什么。
这是我到目前为止所拥有的:
import store from '@/src/store/store'
describe('login', () => {
it('bad input', () => {
store.login({ username: "abcd", password: ""});
// What is the test I should use?
}
}