Sun*_*nin 8 javascript node.js jes
我正在尝试向我正在开发的节点应用程序添加一些测试。我浏览了手动模拟的 jest 文档,并尝试按照说明创建mocks文件夹。请在下面找到文件夹结构。
app
- firebase
- fb.js
- __mocks__
- fb.js
- firebase-admin.js
- resolvers
- mutation.js
__tests__
- user.spec.js
Run Code Online (Sandbox Code Playgroud)
如您所见,我尝试模拟两个模块,fb.js(用户模块)和 firebase-admin.js(node_modules 模块)。firebase-admin.js 模拟工作没有任何问题。但是用户模块模拟甚至没有被开玩笑所接受。实际的 fb.js 模块一直在被调用。
我曾尝试为我的项目中的各种用户模块创建mocks目录,但没有一个被选中。有没有我缺少的额外配置??。目前我正在通过仅模拟 firebase-admin 节点模块来解决此问题。但我想模拟 user 模块而不是 firebase-admin 模块,以便我的 firebase 配置也被模拟。如果需要更多信息,请告诉我。
__mocks__/fb.js
module.exports = {
auth: jest.fn(() => "testing")
};
Run Code Online (Sandbox Code Playgroud)
__mocks__/fb-admin.js
module.exports = {};
Run Code Online (Sandbox Code Playgroud)
__tests__/user.spec.js
const request = require('supertest');
const server = require('../app').createHttpServer({});
const app = request(server);
describe('login resolvers', () => {
test('should sign up user', async () => {
const response = await app.post('/')
.send({
query: `mutation {
signUp(idToken: "esd45sdfd...") {
user {
id
locked
revoked
}
}
}
`,
})
.set('Accept', 'application/json')
.expect(200);
console.log(response.text);
});
});
Run Code Online (Sandbox Code Playgroud)
应用程序/解析器/mutation.js
const admin = require('../firebase/fb');
/* other app code here */
Run Code Online (Sandbox Code Playgroud)
当我们在测试中需要该模块时,则需要显式调用
jest.mock('./moduleName')。如果您
lodash模拟的模块是 Node 模块(例如:),则模拟应放置在__mocks__相邻的目录中node_modules(除非您将根配置为指向项目根以外的文件夹),并且将自动进行模拟。无需显式调用jest.mock('module_name').
我必须非常仔细地阅读文档。特别是关于“除非您将根配置为指向项目根以外的文件夹”的部分 。仔细检查您是否__mocks__在为 Jest 指定的源文件夹中设置了该文件夹。如果您配置了 jests 根目录,这在 monorepo 或一般情况下尤其重要
| 归档时间: |
|
| 查看次数: |
9939 次 |
| 最近记录: |