我正在尝试测试我创建的使用 vue-resource 进行 API 调用的服务。该服务应该使用新数据进行调用并更新组件,但是在我的测试中它没有注册更新的值。我使用与vue-cli webpack示例相同的设置,并且我的身份验证服务基于这个 repo(不幸的是没有任何测试)
我的服务:
export default {
login(context, creds){
context.$http.post(LOGIN_URL, creds)
.then((response) => {
//do something else here
}, (response) => {
context.error = response.data.error
}
}
}
我的测试:
import Vue from 'vue'
import VueResource from 'vue-resource'
Vue.use(VueResource)
import Auth from 'src/auth'
describe('Auth', () => {
it('should throw an error on unsuccessful login', (done) => {
//intercept the api call and force an invalid response
Vue.http.interceptors.unshift((request, next) => {
next(request.respondWidth({error: 'some error'}, {status: 401}));
});
const vm = new Vue({
data: {
error: ''
}
}).$mount()
Auth.login(vm, {email: 'test@test.com', pass: 'test'} )
//this always fails
expect(vm.error).to.equal('some error')
//ive also tried:
vm.$nextTick(() => {
expect(vm.error).to.equal('some error')
//done()
});
//undo our interceptor
Vue.http.interceptors.shift()
}
}
当我运行测试时它失败了,因为它期望''等于'一些错误'。
我的怀疑是 vue-resource 正在使用承诺这一事实。