所以我试图了解如何正确地对调用其中的firebase的函数进行单元测试。我想对这些Firebase函数进行存根或监视,以查看它们是否已被调用,但不进行实际的Firebase调用,因为据我所知,这更多的是集成测试。我不太清楚解决这个问题的正确方法。
这是一个使用Jest和Sinon进行测试的VueJs应用程序。
这是我的Vue组件之一的功能。
min_comp_offer
我的测试
-Login.Vue-
login() {
this.performingRequest = true // initialized as false
firebase.auth
.signInWithEmailAndPassword(
this.loginForm.email,
this.loginForm.password
)
.then(user => {
this.$store.commit("setCurrentUser", user.user);
this.$store.dispatch("fetchUserProfile");
this.performingRequest = false
this.$router.push("/mainPage");
})
.catch(err => {
console.log(err);
this.performingRequest = false
this.errorMsg = err.message
});
},
我想做的是看到firebase auth函数被调用,并且其作用值实际上被更改了。
试图了解要进行打桩/间谍的内容非常困难。我们将非常感谢您对该应用程序进行更多的测试:D
感谢您的高级帮助,如果需要澄清,请告诉我。
与此同时,我将进行研究:)
编辑:
似乎这只是我的用户错误。希望这可以帮助某人!
这成功了-
describe('Login.vue', () => {
const wrapper = shallowMount(Login);
test('Login function works as expected', () => {
expect(wrapper.vm.performingRequest).toBe(false); // passes
let spy = sinon.spy(wrapper.vm.login());
spy.call();
expect(wrapper.vm.performingRequest).toBe(true); // passes
expect(spy.calledOnce).toBe(true);
// expect(wrapper.vm.performingRequest).toBe(false); // passes
})
});