node.js - 在 Vows.js 中,如何在经历异步回调后恢复到原始主题?

标签 node.js bdd vows

假设我有以下序列:

vows.describe('Example').addBatch({
   'An example' : {
      topic: new Example(),
      'with an async method' : function(example) {
         example.asyncMethod(this.callback);
      },
      'will do some magic' : function(err, result) {
         assert.equal(result.magical, true);
      },
      'and then we will be back on track' : function(example) {
         assert.isTrue(example.backOnTrack); 
      }
   }
}).run();

测试“然后我们将回到正轨”是否可能符合之前的主题(示例)?

编辑

vows.describe('Example').addBatch({
   'An example' : {
      topic: function(example){ // <- where example is a parent topic
         example.asyncMethod(this.callback);
      },    
      'callback after an async method will do some magic' : function(err, result) {
         assert.equal(result.magical, true);
      },
      'and then we will be back on track' : function(example) {
         assert.isTrue(example.backOnTrack); 
      }
   }
}).run();

最佳答案

主题返回将发送到您所有誓言的主题。

在第一个誓言中,“使用异步方法” this.callback 未定义,因为回调仅在主题中定义。在第二个誓言中,参数是 example 而不是 err, result

如果您想要进行任何异步测试,您需要为您的主题设置一个函数并使用 this.callback 或从主题返回一个 EventEmitter

编辑:

您遇到的问题是从誓言返回多个主题。这是不可能的。

最简单的解决方案是返回一个新主题,该主题是两个主题的数组。这感觉很黑客。

更好的解决方案是确保单独测试您的主题。基本上你的测试“副作用”已经成功发生。副作用不应该发生

关于node.js - 在 Vows.js 中,如何在经历异步回调后恢复到原始主题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7640946/

相关文章:

python - 在行为框架中使用自定义标签运行场景

rest - Express.js 的 BDD 测试框架

javascript - Node-slack web api : chat. delete 返回所有 channel 的 channel_not_found 尽管 channels.list 返回所有 channel

ruby-on-rails - capybara 如何使用 href 模式测试多个链接

javascript - 如何在node.js上创建一个turn服务器以进行对等连接

用于检查具有特定类的元素的父级的 cucumber 测试

javascript - Vows with Async 嵌套主题 - 范围问题

javascript - node.js,测试 mongodb 保存和加载

node.js - Node 什么时候发出数据事件?

node.js - Mongoose 按引用查找不返回任何内容