我正在尝试使用Firebase函数测试SDK测试Firebase Cloud函数。。。文档(通常(是基于mocha/sinon的,但由于我的项目是基于Jest的,我想使用Jest。。。
在文档中,他们指出,由于index.js正在调用admin.initializeApp……我需要在导入函数之前将其截断。
所以他们写:
const test = require("firebase-functions-test");
const admin = require("firebase-admin");
adminInitStub = sinon.stub(admin, 'initializeApp');
myFunctions = require('../index');
使用Jest,我试图以这种方式模仿它:
const test = require("firebase-functions-test");
const admin = require("firebase-admin");
adminInitStub = jest.mock(admin, 'initializeApp');
myFunctions = require('../index');
但是我得到一个错误:
失败测试/index.spec.jsCloud函数✕遇到声明异常(5ms(
● Cloud Functions › encountered a declaration exception
TypeError: moduleName.split is not a function
4 |
5 | describe('Cloud Functions', () => {
> 6 | const adminInitStub = jest.mock(admin, "initializeApp");
| ^
7 | const myFunctions = require('../index.js');
8 |
9 | before(() => {
at Resolver.resolveModuleFromDirIfExists (../node_modules/jest-resolve/build/index.js:187:30)
at Suite.mock (tests/index.spec.js:6:30)
我哪里错了?
我认为问题是滥用了jest.mock函数
该功能将在模块上使用,如"需要"或导入,例如
jest.mock('fs');
(https://jestjs.io/docs/en/manual-mocks)
您可能会将其与jest.fn或genMockFunction((混淆
jest.mock(...)
使用jest.spyOn
。像这样:
adminStub = jest.spyOn(admin, "initializeApp");
关于jest.spyOn
的更多信息
虽然我不能准确指出您做错了什么,但我可以向您介绍firebase函数测试的单元测试函数文档。你可以在那里运行这个例子,也可以免费预览我在AngularFirebase上找到的"如何用Jest测试Firebase云功能"课程。我还没有尝试过,因为我不在那种环境中发展,但我希望它能有所帮助。
谢谢Samuel。。。我读过这个例子,正如我提到的那样,它使用Mocha。。。在Angular中,它没有提供任何关于嘲笑笑话的信息。。