YUKI Hiroshi
null+****@clear*****
Thu Jan 10 17:20:34 JST 2013
YUKI Hiroshi 2013-01-10 17:20:34 +0900 (Thu, 10 Jan 2013) New Revision: ef40c0d2b654a22b00759ed6d4eba46060e7da56 https://github.com/groonga/express-kotoumi/commit/ef40c0d2b654a22b00759ed6d4eba46060e7da56 Log: Define mocked sender without nodemock (because sent message will be dynamically generated) Modified files: test/backend-adaptor.test.js Modified: test/backend-adaptor.test.js (+35 -24) =================================================================== --- test/backend-adaptor.test.js 2013-01-10 17:19:35 +0900 (b73c840) +++ test/backend-adaptor.test.js 2013-01-10 17:20:34 +0900 (1b1c354) @@ -4,30 +4,48 @@ var nodemock = require('nodemock'); var Connection = require('../lib/backend-adaptor').Connection; function createSender() { - return nodemock; + var sender = { + emit: function(eventName, message) { + this.messages.push({ eventName: eventName, message: message }); + }, + assertSent: function(eventName, message) { + var firstMessage = this.messages.shift(); + var expectedMessage = { eventName: eventName, message: message }; + assert.deepEqual(firstMessage, expectedMessage); + }, + messages: [], + }; + return sender; } function createReceiver() { - var mockedSocket = nodemock; - var callbackController = {}; + var mockedSockets; + var mockedReceiverInternal = nodemock; + var connactionCallbackController = {}; var receiver = { // mocking receiver sockets: - (mockedSocket = - mockedSocket.mock('on') - .takes('test.message', function() {}) - .ctrl(1, callbackController)), + (mockedSockets = nodemock.mock('on') + .takes('connection', function() {}) + .ctrl(1, connactionCallbackController)), 'set': function(key, value) {}, // extra features as a mocked object - triggerMessage: function(message) { - callbackController.trigger(message); - }, - mock: function(name) { - return mockedSocket.mock(name); - }, - assert: function() { + triggerConnect: function(tag) { + mockedSockets.assert(); + var mockedSocket = nodemock.mock('on') + .takes(tag + '.message', function() {}); + connactionCallbackController.trigger(mockedSocket); mockedSocket.assert(); + }, + takes: function(message) { + this.assert = function() { + mockedReceiverInternal.assert(); + }; + mockedReceiverInternal = mockedReceiverInternal + .mock('emit') + .takes(message); + return mockedReceiverInternal; } }; return receiver; @@ -45,6 +63,7 @@ suite('Connection', function() { sender: sender = createSender(), receiver: receiver = createReceiver() }); + receiver.triggerConnect('test'); }); teardown(function() { @@ -53,17 +72,9 @@ suite('Connection', function() { receiver = undefined; }); - function assertMessages() { - sender.assert(); - receiver.assert(); - } - test('message without response (volatile message)', function() { - sender.mock('emit') - .takes({ tag: 'message', - message: { command: 'foobar' } }); - connection.emit({ command: 'foobar' }); - assertMessages(); + connection.emitMessage({ command: 'foobar' }); + sender.assertSent('message', { body: { command: 'foobar' } }); }); }); -------------- next part -------------- HTML����������������������������...Download