... "should call success handler for status 200": function () { var request = forceStatusAndReadyState.call(this, 200, 4); assert.called(request.success); }, ...
のように使った。
http://tddjs.com/code
You are free to use the code from this book however you wish. All code is licensed under the two clause BSD license.
"use strict"; var http = require("http"); var url = require("url"); var send = require("send"); var chatRoomController = require("./chat_room_controller"); var chatRoom = require("./chat_room"); var room = Object.create(chatRoom); module.exports = http.createServer(function (req, res) { var pathName = url.parse(req.url).pathname; var controller; if (pathName === "/comet") { controller = chatRoomController.create(req, res); controller.chatRoom = room; controller[req.method.toLowerCase()](); } else { send(req, pathName) .from(__dirname + '/../../public') .on('error', function () { res.writeHead(404, { "Content-Type": "text/html" }); res.write("<h1>Nothing to see here, move along</h1>"); res.end(); }) .pipe(res); } });
when.js を使った chat_room.js
"use strict"; var EventEmitter = require("events").EventEmitter; var when = require("when"); var chatRoom = Object.create(EventEmitter.prototype); ... chatRoom.waitForMessagesSince = function (id) { var deferred = when.defer(); this.getMessagesSince(id).then(function (messages) { if (messages.length > 0) { deferred.resolve(messages); } else { var listener = function (message) { this.removeListener("message", listener); deferred.resolve([message]); }.bind(this); this.addListener("message", listener); } }.bind(this)); return deferred.promise; }; module.exports = chatRoom;
chat_room_controller_test.js
インポート。
var EventEmitter = require("events").EventEmitter; var buster = require("buster"); var when = require("when"); var chatRoomController = require("../../lib/chapp/chat_room_controller"); var testCase = buster.testCase; var assert = buster.assert; var refute = buster.refute;