javascript - 使用 Firebase 时应该如何测试 vue 组件?

标签 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', ...

最佳答案

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

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

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

关于javascript - 使用 Firebase 时应该如何测试 vue 组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52648283/

相关文章:

javascript - 服务器过载……有请求?如何有效地明智地对服务器客户端进行编程

java - 测试应用程序生命周期、销毁和创建

javascript - Jasmine 单元测试失败?

javascript - 在同一级别的 div 上创建一个 toggleClass?

JavaScript 无法执行 "style.transition"

java - 测试依赖项调用的 lambda 表达式

c# - 测试使用 HttpContext.Current.Request.Files 的 Web API 方法?

firebase - 用于公共(public)存储库的 CircleCI 2.0 私有(private)环境 key

javascript - Firebase 不存储日期

reactjs - FirebaseUI - 在创建用户之前验证显示名称