[英]Rookie error while writing test with Chai, Mocha, Express, johnny-five and node
嗨,我正在嘗試使用 express、mocha、chai 和 johnny-5 來學習一些測試驅動開發。 所以我寫了這個可以打開和關閉 LED 的小應用程序。 該應用程序有效,但我的測試失敗。 有人可以告訴我我在測試中做錯了什么嗎?
謝謝
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;
}
};
編輯:我在 test/j5.js 中的 j5.js 的路徑是錯誤的。 但現在我有一個新的錯誤。 斷言錯誤:在上下文中預期未定義等於 1。 (測試/j5.js:9:14)。
經過一番玩耍后,我發現了我的錯誤。
johnny-5 需要一些時間才能通過串口連接到開發板。 一旦 REPL 中的構建可用,我就可以使用on()
和off()
函數。 所以我讓我的測試在調用j5.on()
之前等待 5 秒鍾。 done()
函數的標准最大超時為 2000 毫秒。 為了延長這個時間,我使用了this.timeout(10000);
這是我的新測試/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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.