【问题标题】:How should I test vue components when using Firebase?使用 Firebase 时应该如何测试 vue 组件?
【发布时间】:2019-03-09 22:30:51
【问题描述】:

我正在为一个使用 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', ...

【问题讨论】:

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


    【解决方案1】:

    一种方法是在您的测试套件中使用 beforeEach 函数来获得身份验证/检查身份验证是否仍然有效,简单地说:

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

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

    【讨论】:

    • 谢谢!那重复性要少得多。但是不,我在组件内完成了所有的 firebase 逻辑。您是否有一个项目或博客文章的引用来区分这个逻辑?
    • 快速谷歌搜索到了这个 - medium.com/@amenallah.hsoumi/… 。您会看到他们的登录操作实际上在 'actions' 中进行了 firebase 调用。希望对您有所帮助!
    猜你喜欢
    • 1970-01-01
    • 2020-05-05
    • 2021-10-02
    • 1970-01-01
    • 2019-04-19
    • 2018-11-24
    • 2018-07-25
    • 2019-05-27
    • 2018-08-09
    相关资源
    最近更新 更多