用Chai,Mocha,Express,johnny-five和node编写testing时的菜鸟错误

你好,我试图学习一些使用快递,摩卡,柴和约翰尼五testing驱动开发。 所以我写了这个可以打开和closuresLED的小应用程序。 该应用程序的工作,但我的testing失败 有人能告诉我在testing中我做错了什么吗?
谢谢

npm test的输出是

 > blink@1.0.0 test /Users/me/Documents/johnny-five/blink > mocha --reporter spec 1435257445439 Looking for connected device j5 .on() 1) Should turn a led on .off() ✓ Should turn a led off 1 passing (13ms) 1 failing 1) j5 .on() Should turn a led on: AssertionError: expected undefined to equal 1 at Context.<anonymous> (test/j5.js:9:14) npm ERR! Test failed. See above for more details. 

这是test / j5.js

 require('mocha'); var assert = require('chai').assert; var j5 = require("../j5"); describe('j5', function () { describe('.on()', function () { it('Should turn a led on',function(){ var result = j5.on(); assert.equal(result, 1); }); }); describe('.off()', function () { it('Should turn a led off', function () { // var res = j5.on(); // expect(res).to.equal(0); }); }); }); 

这是server.js

 var express = require("express"); var app = express(); var j5 = require("./j5"); var port = 3000; app.get('/', function(req, res){ res.send('hello j5'); }); app.get("/on", function(req, res) { j5.on(); res.send("on"); }); app.get("/off", function(req, res) { j5.off(); res.send("off"); }); console.log("listening on port http://localhost:" + port); app.listen(3000); 

这是j5.js

 var exports = module.exports = {}; var five = require("johnny-five"); var board = new five.Board(); var board_ready = false; var led = null; board.on("ready", function() { board_ready = true; led = new five.Led(13); }); exports.on = function() { if (led !== null && board_ready === true) { led.on(); return 1; } }; exports.off = function() { if (led !== null && board_ready === true) { led.off(); return 0; } }; 

编辑:我的j5.js在testing/ j5.js的path是错误的。 但现在我有一个新的错误。 AssertionError:在上下文中预计未定义为1。 (试验/ j5.js:9:14)。

经过一番玩,我发现我的错误。
johnny-five需要一些时间通过串口连接到电路板。 只要在REPL中构build,我可以使用on()off()函数。 所以我做了我的testing等待5秒钟,然后调用j5.on()done()函数的标准最大超时值是2000ms。 为了使这个更长,我用this.timeout(10000);

这是我的新testing/ j5.js

 require('mocha'); var assert = require('chai').assert; var j5 = require("../j5"); var result = null; describe('j5', function() { describe('.on()', function() { it('Should turn a led on', function(done) { this.timeout(10000); setTimeout(function() { result = j5.on(); assert.equal(result, 1); done(); }, 5000); }); }); }); 

npm test结果:

 > blink@1.0.0 test /Users/icke/Documents/johnny-five/blink > mocha --reporter spec 1435305595110 Device(s) /dev/cu.usbmodem1421 1435305595124 Connected /dev/cu.usbmodem1421 j5 .on() 1435305598694 Repl Initialized ✓ Should turn a led on (5003ms) .off() ✓ Should turn a led off 2 passing (5s)