HTML and CSS Reference
In-Depth Information
14.3.3 Adding Messages
As dictated by the controller using it, the
chatRoom
object should have an
ad-
dMessage
method that accepts a username and a message.
14.3.3.1 Dealing with Bad Data
For basic data consistency, the
addMessage
method should err if either the user-
name or message is missing. However, as an asynchronous I/O interface, it cannot
simply throw exceptions. Rather, we will expect errors to be passed as the first ar-
gument to the callback registered with
addMessage
, as is the Node way. Listing
14.29 shows the test for missing username. Save it in
test/chapp/chat
_
room
_
test.js
.
Listing 14.29
addMessage
should require username
var testCase = require("nodeunit").testCase;
var chatRoom = require("chapp/chat_room");
testCase(exports, "chatRoom.addMessage", {
"should require username": function (test) {
var room = Object.create(chatRoom);
room.addMessage(null, "a message", function (err) {
test.isNotNull(err);
test.inherits(err, TypeError);
test.done();
});
}
});
The test fails as expected, and so we add a check on the
user
parameter, as
Listing 14.30 shows.
Listing 14.30
Checking the username
var chatRoom = {
addMessage: function (user, message, callback) {
if (!user) {
callback(new TypeError("user is null"));
}
}
};