Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 什么';使用Mocha对事件处理程序进行单元测试的正确方法是什么?_Node.js_Unit Testing_Mocha.js - Fatal编程技术网

Node.js 什么';使用Mocha对事件处理程序进行单元测试的正确方法是什么?

Node.js 什么';使用Mocha对事件处理程序进行单元测试的正确方法是什么?,node.js,unit-testing,mocha.js,Node.js,Unit Testing,Mocha.js,我有一个函数,它接受一个事件处理程序来处理接收到的消息,我想用Mocha为它编写一个单元测试 chat.setupBroadcastChannel = async (a, b, callback) => { // do something return await otherFunction(..) } chat.sendBroadcastMessage= async (a, b) => { // do something

我有一个函数,它接受一个事件处理程序来处理接收到的消息,我想用Mocha为它编写一个单元测试

chat.setupBroadcastChannel = async (a, b, callback) => {
        // do something
        return await otherFunction(..)
    }
chat.sendBroadcastMessage= async (a, b) => {
        // do something
        return await sendMessage(..)
    }
我的测试如下所示:

it('should setup a broadcast channel and send and receive a broadcast message', () => {
        const testMessage = 'Hello!'
        let expectedMessage = '{d"sender":"self","message":"Hello!"}'
        let receivedMessage
        return chat.setupBroadcastChannel(broadcastTopic, false, (topic, partition, message) => {
                receivedMessage = message.value.toString()
                console.log('Test: Received a broadcast message', receivedMessage)
                console.log(receivedMessage, expectedMessage)
                assert.equal(receivedMessage, expectedMessage)
            })
            .then(async () => {
                await chat.sendBroadcastMessage('self', testMessage)
            })
    })
receivedMessage
expectedMessage
不匹配时,测试不起作用。看起来失败的断言是由Kafka(我正在使用的消息传递层)而不是Mocha接收的

{"level":"ERROR","timestamp":"2021-05-22T14:58:14.247Z","logger":"kafkajs","message":"[Runner] Error when calling
 eachMessage","topic":"broadcast","partition":0,"offset":"138","stack":"AssertionError [ERR_ASSERTION]:
 '{\"sender\":\"self\",\"message\":\"Hello!\"}' == '{d\"sender\":\"self\",\"message\":\"Hello!\"}'\n
 at D:\\path\\test\\chat.js:21:20\n    at Runner.eachMessage (D:\\path\\backend\\kafka.js:44:17)\n
 at Runner.processEachMessage (D:\\path\\node_modules\\kafkajs\\src\\consumer\\runner.js:151:20)\n 
 at onBatch (D:\\path\\node_modules\\kafkajs\\src\\consumer\\runner.js:287:20)\n 
 at D:\\path\\node_modules\\kafkajs\\src\\consumer\\runner.js:339:21\n  
 at invoke (D:\\path\\node_modules\\kafkajs\\src\\utils\\concurrency.js:38:5)\n 
 at push (D:\\path\\node_modules\\kafkajs\\src\\utils\\concurrency.js:51:7)\n 
 at D:\\path\\node_modules\\kafkajs\\src\\utils\\concurrency.js:60:53\n 
 at new Promise (<anonymous>)\n  
 at D:\\path\\node_modules\\kafkajs\\src\\utils\\concurrency.js:60:20\n 
 at D:\\path\\node_modules\\kafkajs\\src\\consumer\\runner.js:329:11\n 
 at Array.map (<anonymous>)\n
 at D:\\path\\node_modules\\kafkajs\\src\\consumer\\runner.js:328:17\n 
 at processTicksAndRejections (internal/process/task_queues.js:93:5)\n 
 at async Promise.all (index 0)\n  
 at async Runner.fetch (D:\\path\\node_modules\\kafkajs\\src\\consumer\\runner.js:354:5)\n 
 at async D:\\path\\node_modules\\kafkajs\\src\\consumer\\runner.js:383:9",
 "error":{"generatedMessage":true,"code":"ERR_ASSERTION",
 "actual":"{\"sender\":\"self\",\"message\":\"Hello!\"}",
 "expected":"{d\"sender\":\"self\",\"message\":\"Hello!\"}","operator":"=="}}
{“level”:“ERROR”,“timestamp”:“2021-05-22T14:58:14.247Z”,“logger”:“kafkajs”,“message”:“[Runner]调用时出错”
每个消息”,“主题”:“广播”,“分区”:0,“偏移量”:“138”,“堆栈”:“断言错误”[ERR_ASSERTION]:
“{\'sender\':\'self\',\'message\':\'Hello!\'}'='{d\'sender\':\'self\',\'message\':\'Hello!\'}'\n
在Runner.eachMessage的D:\\path\\test\\chat.js:21:20\n处(D:\\path\\backend\\kafka.js:44:17)\n
在Runner.processEachMessage(D:\\path\\node\u modules\\kafkajs\\src\\consumer\\Runner.js:151:20)处\n
在onBatch(D:\\path\\node\u modules\\kafkajs\\src\\consumer\\runner.js:287:20)\n
在D:\\path\\node\u modules\\kafkajs\\src\\consumer\\runner.js:339:21\n
在调用时(D:\\path\\node\u modules\\kafkajs\\src\\utils\\concurrency.js:38:5)\n
推送时(D:\\path\\node\u modules\\kafkajs\\src\\utils\\concurrency.js:51:7)\n
在D:\\path\\node\u modules\\kafkajs\\src\\utils\\concurrency.js:60:53\n
在新的承诺下()\n
在D:\\path\\node\u modules\\kafkajs\\src\\utils\\concurrency.js:60:20\n
位于D:\\path\\node\u modules\\kafkajs\\src\\consumer\\runner.js:329:11\n
位于Array.map()\n
在D:\\path\\node\u modules\\kafkajs\\src\\consumer\\runner.js:328:17\n
在处理和拒绝时(内部/process/task\u queues.js:93:5)\n
在async Promise.all(索引0)上\n
在async Runner.fetch(D:\\path\\node\u modules\\kafkajs\\src\\consumer\\Runner.js:354:5)\n
在异步D:\\path\\node\u modules\\kafkajs\\src\\consumer\\runner.js:383:9“,
“error”:{“generatedMessage”:true,“code”:“ERR_断言”,
“实际”:“{\”发送者\“:\”自我\“,\”消息\“:\”你好!\“}”,
“应为“{d\”发件人\“:\”自我\“,\”消息\“:\”你好!\“}”,“操作员”:“==”}”
设置此测试的正确方法是什么