使用Node serialport回调时进行模拟/单元测试

时间:2015-05-15 03:50:59

标签: javascript node.js unit-testing mocking

我正在为通过串口连接的第三方设备开发Web界面。下面的示例代码......

var serialport = require("serialport");
var SerialPort = serialport.SerialPort;
var sp = new SerialPort("/dev/ttyACM0", {
    parser: serialport.parsers.readline("\n")
});

sp.on("data", function (rawData) {
...

我的问题是如何模拟/单元测试sp“数据”事件......

1 个答案:

答案 0 :(得分:2)

您可以发出'数据'事件随意,因为.emit()实现了the EventEmitter interface。只需使用.emit()即可。

此代码将记录" woot"即使串行接口实际上没有接收到任何数据,也要进入控制台。它使用var serialport = require("serialport"); var SerialPort = serialport.SerialPort; var sp = new SerialPort("/dev/ttys000", { parser: serialport.parsers.readline("\n") }); sp.on("data", function (rawData) { console.log('woot'); }); sp.emit('data'); 伪造它。

Users = [[user1,user2,user3],[user4,user5,user6],...