我正在编写一个nodejs模块来抽象连接到Raspberry Pi的gpio标题的驱动电机的细节。
用于与pi的gpio通信的节点模块是pi-gpio
我正在使用jasmine
测试我的模块,因为我知道pi-gpio
模块我require
具有特定的硬件要求并且它不会运行我的开发PC(因为它不是pi),我使用proxyquire来存根依赖。
考虑以下(简化)模块:
的 nodepibot.js
'use strict';
var gpio = require("pi-gpio");
const LOW = 0,
HIGH = 1;
const MOTOR_LEFT_ENABLE = 22,
MOTOR_LEFT_A = 16,
MOTOR_LEFT_B = 18;
var leftMotorStop = function leftMotorStop() {
gpio.write(MOTOR_LEFT_ENABLE, LOW, function (err) {
if (err) {
throw err;
}
});
};
module.exports = {
"leftMotorStop": leftMotorStop
};
我的jasmine
规范:
的 nodepibotSpec.js
describe("Node Pibot tests", function() {
var nodepibot,
stubGpio = {
write: function() {}
};
beforeEach(function() {
var proxyquire = require('proxyquire').noCallThru();
nodepibot = proxyquire("../main/nodepibot", {'pi-gpio': stubGpio});
});
it("Should stop left motor", function() {
// Given
spyOn(stubGpio, "write");
// When
nodepibot.leftMotorStop();
// Then
expect(stubGpio.write.callCount).toBe(1);
expect(stubGpio.write).toHaveBeenCalledWith(22, 0, jasmine.any(Function));
});
});
以上测试我的快乐路径' - IE。我断言在我的模块上调用leftMotorStop
时,write
方法会在具有适当参数的pi-gpio
库上调用。
我希望能够做的是测试un-happy path
- IE。当err
有一个值时,测试匿名回调函数,在这种情况下,我断言异常会被抛回。
有谁知道我会怎么做?
答案 0 :(得分:0)
只需重写你的存根写函数,调用错误函数:
var nodepibot,
stubGpio = {
write: function(var1, var2, callback) {
callback("stubbed error");
}
};