使用Firebase时应如何测试vue组​​件?

时间:2018-10-04 13:42:05

标签: javascript unit-testing firebase vue.js vue-test-utils

我正在为使用Firebase的Vue项目编写单元测试。测试使用的是vue-test-utils。

问题是我在尝试绕过身份验证时遇到了麻烦,并且在每次测试中我都发现自己正在做这样的事情。

...
const login = async () => {
return firebase.auth().signInWithEmailAndPassword(email, pass).then(
    res => {
        return res
    },
    err => {
        return new Error(err)
    })
}
...
describe('some component', () => {
    it('test something', async () => {
        try {
            await login()
            ...
        } catch (e) {
            ...
        }
    })
    it('test something else', async () => {
        try {
            await login()
            ...
        } catch (e) {
            ...
        }
    })
})

我的问题是。建议使用哪种方法来测试使用Firebase的Vue组件,以及如何避免每次测试都必须登录?

希望我正确地解释了我的问题!

我最终做了这个,因为就我而言,一次就足够了。

...
beforeAll(() => {
  return login()
})

describe('some component', ...

1 个答案:

答案 0 :(得分:1)

一种方法是使用测试套件中的beforeEach函数来进行身份验证/检查身份验证是否仍然有效,只需:

beforeEach(() => {
    try {
        await login()
        ...
    } catch (e) {
        ...
    }
})

但是,您是直接在vue组件中执行此逻辑吗?理想情况下,您不想直接从vue组件进行此类调用。如果您将该逻辑从组件中移出并移到服务类中(或者更进一步,并使用vuex管理状态等。),则可以将Firebase逻辑与组件逻辑分开进行测试。