我很确定这会很容易解决,但我已经被这个问题困扰了一段时间了。我正在使用 Jest 构建一个后台(后端)测试文件。这是我的
background.test.js
`
const fileConnection = require('../background');
const firebaseConnection = require('../background');
const stripeConnection = require('../background');
test('File Test', () => {
expect(fileConnection).toBe(true);
});
describe('Background Test', () => {
test('Firebase connection', async () => {
expect(firebaseConnection).not.toBe(null);
});
test('Stripe and Back-End connection', async () => {
expect(stripeConnection).not.toBe(null);
});
});
`
还有我的
background.js
文件:
import { db } from 'firebase/firestore';
let test = false;
/**
*
*/
function fileConnection() {
test = true;
return test;
}
/**
*
*/
function firebaseConnection() {
try {
return db;
} catch (error) {
return null;
}
}
/**
*
*/
function stripeConnection() {
// the backend stripe connection is on CENSORED
// So I need to check if the connection is working
try {
fetch('CENSORED');
return 'Stripe connection is working';
} catch (error) {
return null;
}
}
module.exports = (fileConnection, firebaseConnection, stripeConnection);
现在,我遇到的错误是这个:
✕ File Test (4 ms)
Background Test
✓ Firebase connection (1 ms)
✓ Stripe and Back-End connection (1 ms)
● File Test
expect(received).toBe(expected) // Object.is equality
Expected: true
Received: [Function stripeConnection]
7 |
8 | test('File Test', () => {
> 9 | expect(fileConnection).toBe(true);
| ^
10 | });
11 |
12 | describe('Background Test', () => {
at Object.toBe (src/test/background.test.js:9:26)
如您所见,我在文件测试函数上收到了条带连接的响应。我相信这可能与我导出 .js 文件的方式有关。谢谢你帮助我!
我尝试改变使用导出的方式,但我不确定为什么与 firebase 的连接没有消除该错误。只有条带连接才可以。我尝试过复制代码样式,但行不通。
您的
module.exports
语句的语法是错误的,但我认为您运行测试时它是正确的。只是为了确定:您必须使用花括号。
module.exports = {fileConnection, firebaseConnection, stripeConnection};
关于测试失败:
开玩笑(正确地)告诉您
fileConnection
的值为 [Function stripeConnection]
,因为它 is 是一个函数。您的意图是比较该函数的结果,因此您必须调用它。您需要 expect(fileConnection).toBe(true)
而不是 expect(fileConnection()).toBe(true)
(注意函数调用)。