[Groonga-commit] groonga/express-kotoumi [master] Use mocked sended and receiver with nodemock

Back to archive index

YUKI Hiroshi null+****@clear*****
Thu Jan 10 14:33:41 JST 2013


YUKI Hiroshi	2013-01-10 14:33:41 +0900 (Thu, 10 Jan 2013)

  New Revision: 070cb26e37c167db37634ef86f0b0f819c36b39e
  https://github.com/groonga/express-kotoumi/commit/070cb26e37c167db37634ef86f0b0f819c36b39e

  Log:
    Use mocked sended and receiver with nodemock

  Modified files:
    test/backend-adaptor.test.js

  Modified: test/backend-adaptor.test.js (+43 -10)
===================================================================
--- test/backend-adaptor.test.js    2013-01-10 13:09:37 +0900 (63113a5)
+++ test/backend-adaptor.test.js    2013-01-10 14:33:41 +0900 (a92facd)
@@ -3,34 +3,67 @@ var nodemock = require('nodemock');
 
 var Connection = require('../lib/backend-adaptor').Connection;
 
+function createSender() {
+  return nodemock;
+}
+
+function createReceiver() {
+  var mockedSocket = nodemock;
+  var callbackController = {};
+  var receiver = {
+    // mocking receiver
+    sockets:
+      (mockedSocket =
+        mockedSocket.mock('on')
+          .takes('test.message', function() {})
+          .ctrl(1, callbackController)),
+    '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() {
+      mockedSocket.assert();
+    }
+  };
+  return receiver;
+}
+
 suit('Connection', function() {
   var connection;
   var sender;
+  var receiver;
 
   setup(function() {
-    sender = {
-      emittedMessages: [];
-      emit: function(tag, message) {
-        this.emittedMessages.push({ tag: tag, message: message });
-      }
-    };
     connection = new Connection({
       tag:        'test',
       listenPort: 3333,
-      sender:     sender
+      sender:     sender = createSender(),
+      receiver:   receiver = createReceiver()
     });
   });
 
   teardown(function() {
     connection = undefined;
     sender = undefined;
+    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' });
-    assert.deepEqual(sender.emittedMessages,
-                     [{ tag: 'message',
-                        message: { command: 'foobar' } }]);
+    assertMessages();
   });
 });
 
-------------- next part --------------
HTML����������������������������...
다운로드 



More information about the Groonga-commit mailing list
Back to archive index