我正在尝试使用firebase-functions-test SDK测试Firebase Cloud函数...文档(通常)基于mocha / sinon,但是由于我的项目基于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.js 云功能 ✕遇到声明异常(5毫秒)
● 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)
我在哪里错了?
答案 0 :(得分:0)
虽然我不能确切指出您在做什么错,但可以将您引向firebase-functions-test的单元测试功能文档。您可以在那里浏览示例,也可以在AngularFirebase上找到免费的预览How to Test Firebase Cloud Functions With Jest课程。我没有尝试过,因为我不在那种环境中进行开发,但是我希望它会有所帮助。
答案 1 :(得分:0)
感谢Samuel ...我读了这个示例,因为我提到它使用了Mocha ...,而在Angular中,它没有提供关于开玩笑的任何信息。
答案 2 :(得分:0)
我认为问题是 jest.mock 函数的误用
此功能将在模块上使用,例如'require'或import for ex:
jest.mock('fs');
(https://jestjs.io/docs/en/manual-mocks)
您可能将其与 jest.fn 或 genMockFunction()
混淆了答案 3 :(得分:0)
相反,jest.mock(...)
使用jest.spyOn
。像这样:
adminStub = jest.spyOn(admin, "initializeApp");
有关jest.spyOn
的更多信息