【发布时间】:2021-10-01 16:11:08
【问题描述】:
我有一个要测试的 js 文件。
'use strict';
const KafkaJS = require('kafkajs');
const { Kafka, logLevel } = require('kafkajs');
const kafkaLogger = require('./kafkaLogger');
const { kafkaBrokers } = require('../config/kafkaConfig');
const secretConfig = require('../config/secret');
const { getEnvironment }= require('../utils/getEnvironment');
const fs = require('fs');
const kafkaClient = new Kafka(
{
brokers: kafkaBrokers[getEnvironment()],
clientId: 'api',
connectionTimeout: 20000,
logCreator: kafkaLogger,
logLevel: logLevel.DEBUG,
retry: {
initialRetryTime: 100,
retries: 8
},
ssl: {
rejectUnauthorized: false,
ca: [fs.readFileSync('/etc/secrets/RootCA-SHA256.pem', 'utf-8')],
key: [fs.readFileSync('/etc/secrets/keystore.pem', 'utf-8')],
cert: [fs.readFileSync('/etc/secrets/trust.pem', 'utf-8')],
passphrase: secretConfig.kafka_keystore_password
}
},
);
module.exports = kafkaClient;
我正在编写测试用例..
const KafkaJS = require('kafkajs');
const { Kafka, logLevel } = require('kafkajs');
const kafkaLogger = require('./kafkaLogger');
const { getEnvironment } = require('../utils/getEnvironment');
const fs = require('fs');
jest.mock('../utils/getEnvironment', () => {
return {
getEnvironment: jest.fn().mockResolvedValue('testBrokers'),
};
});
getEnvironment.mockResolvedValue('testBrokers')
jest.mock('fs')
fs.readFileSync.mockReturnValue("cert")
process.env.ENVIRONMENT = 'dev';
jest.mock('kafkajs');
const mockProducer = jest.fn();
const mockConsumer = jest.fn();
KafkaJS.Kafka.mockImplementation((options) => {
expect(options).toEqual({
brokers: 'testBrokers',
clientId: 'api',
connectionTimeout: 20000,
logCreator: kafkaLogger,
logLevel: logLevel.DEBUG,
retry: {
initialRetryTime: 100,
retries: 8
},
ssl: {
rejectUnauthorized: false,
ca: ["cert"],
key: ["cert"],
cert: ["cert"],
passphrase: "cert"
}
});
return { producer: mockProducer, consumer: mockConsumer };
});
const kafkaClient = require('./client');
describe('kafka client', () => {
it('should return a client', async () => {
expect(kafkaClient).toEqual({
producer: mockProducer,
consumer: mockConsumer,
});
});
});
我在开玩笑时收到以下错误..
FAIL src/kafka/client.test.js
● Test suite failed to run
expect(received).toEqual(expected) // deep equality
- Expected - 1
+ Received + 1
@@ -1,7 +1,7 @@
Object {
- "brokers": "testBrokers",
+ "brokers": undefined,
- 请帮助我理解为什么我不能模拟 getEnvironment 函数 正确吗?
- 模拟默认导入有什么不同吗 函数并模拟一个命名的导入函数?
- 通过示例帮助我了解差异。
【问题讨论】:
-
@slideshowp2 你能帮我吗
标签: javascript jestjs ts-jest