使用Jest测试Firebase函数-error:moduleName.split不是函数



我正在尝试使用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.fngenMockFunction((混淆

jest.mock(...)使用jest.spyOn。像这样:

adminStub = jest.spyOn(admin, "initializeApp");

关于jest.spyOn的更多信息

虽然我不能准确指出您做错了什么,但我可以向您介绍firebase函数测试的单元测试函数文档。你可以在那里运行这个例子,也可以免费预览我在AngularFirebase上找到的"如何用Jest测试Firebase云功能"课程。我还没有尝试过,因为我不在那种环境中发展,但我希望它能有所帮助。

谢谢Samuel。。。我读过这个例子,正如我提到的那样,它使用Mocha。。。在Angular中,它没有提供任何关于嘲笑笑话的信息。。

相关内容

  • 没有找到相关文章

最新更新