JavaScript (node.js) : unit testing code that fires multiple events

标签 javascript unit-testing events node.js event-driven-design

我正在尝试编写单元测试代码(caolan 的nodeunit)来测试多个事件触发。

所以,我正在测试

function A() {
  this.fireaway = function() {
    send_message_A_to_queue();
    send_message_B_to_a_different_queue();
    send_message_C_to_a_web_service();
  };
}

因此,仅对 1 个事件进行单元测试很容易。

exports.A = function(test) {
  a = new A();

  queue = new Queue();
  queue.on('message', function(err, message) {
     test.ok(true, "got message");
     test.done();
  };

  a.fireaway();
};

现在,我正在使用 setTimer() 进行倒计时并强制在 X 时间内完成,但是有更好的方法吗?

最佳答案

你可以尝试这样的事情:

var status = {
    'message1': false,
    'message2': false,
    'message3': false,
    'message4': false
};
var my_test_queue = new Queue();
function caught_one(arg)
{
    status.arg = true;
    // if status.message1, message2, message3 and message4 == true,
    my_test_queue.emit('done');
}

queue1.on('message1', function(err, message) {
    test.ok(something);
    caught_one('message1');
};

queue2.on('message2', function(err, message) {
    test.ok(something);
    caught_one('message2');
};

queue3.on('message3', function(err, message) {
    test.ok(something);
    caught_one('message3');
};

queue4.on('message4', function(err, message) {
    test.ok(something);
    caught_one('message4');
};

my_test_queue.on('done', function() {
    test.done();
});

基本上,我会跟踪已触发的事件,当我找到所有事件时,发出我自己的事件,以便可以在该事件上调用 test.done()。

关于JavaScript (node.js) : unit testing code that fires multiple events,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4535951/

相关文章:

javascript - ExtJS 组合框选择器上的滚动事件

actionscript-3 - AS3 从一个类到另一个类调度自定义事件

c# - MassTransit 消息消费者永远看不到子类类型

c# - 如果我将对事件对象的引用复制到另一个对象并随后更改事件对象会怎样?

javascript - 为什么在javascript中出现未处理的 'error'事件

javascript - 为 Javascript 访问命名 HTML 元素的什么属性

javascript - DOJO 中的声明式或编程式方法?

java - 如何使用 Mockito 在单元测试中模拟 ObservableTransformer

unit-testing - 单元测试自定义 Doctrine 存储库

android - 无法在 Kotlin 中进行单元测试(ExecutionException、Aapt2Exception)