【发布时间】:2019-04-13 19:25:37
【问题描述】:
我的目的只是测试一个功能。我无法弄清楚如何正确模拟 firebase。我尝试使用来自 Jest 文档的 axios 模拟来保留示例。我有以下代码:
MusicService.js
import { initializeApp } from "firebase/app";
import "firebase/database";
const firebase = initializeApp({
apiKey: "<API_KEY>",
authDomain: "<PROJECT_ID>.firebaseapp.com",
databaseURL: "https://<DATABASE_NAME>.firebaseio.com",
projectId: "<PROJECT_ID>",
storageBucket: "<BUCKET>.appspot.com",
messagingSenderId: "<SENDER_ID>",
});
export class MusicService {
static getAlbums() {
return firebase.database().ref("albums").once("value")
.then(snapshot => Object.values(snapshot.val()));
}
}
MusicService.test.js
import firebase from 'firebase/app';
import 'firebase/database';
import { MusicService } from './MusicService';
jest.mock('firebase/app');
jest.mock('firebase/database');
test("test", () => {
firebase.initializeApp.mockImplementation(() => {
database: jest.fn(() => {
return {
ref: jest.fn()
}
})
});
MusicService.getAlbums();
});
我试图模拟 firebase.database。
test("test", () => {
firebase.mockImplementation(() => {
return {
database: {
}
}
});
MusicService.getAlbums();
});
但在这种情况下,我收到错误消息:
TypeError: _app.default.mockImplementation 不是函数。
我不希望给出有效的示例,但您能告诉我,我究竟应该模拟什么?整个 firebase 库或者我的函数开始的部分 - return firebase.database()。
【问题讨论】:
标签: javascript firebase unit-testing firebase-realtime-database jestjs