【问题标题】:Vows.js - Number of args this.callback returns to topic versus vowVows.js - this.callback 返回主题与誓言的参数数
【发布时间】:2011-09-03 12:25:06
【问题描述】:

来自誓言网站:“当 this.callback 被调用时,它会将接收到的参数一一传递给测试函数,就好像这些值是由主题函数本身返回的一样。”换句话说,如果我们使用请求库来处理我们的 http 请求,我们的主题和誓言可能如下所示:

'When I make a valid request':
  topic: ->
    request
      uri: someURL
      method: "GET"
    , @callback
    return undefined # necessary because I'm using coffeescript

  "It should respond with a 200":
    (err, resp, body) ->
      assert.equal resp.statusCode, "200"

但串在一起的主题似乎按照不同的规则发挥作用。他们似乎只传递一个论点。这是来自 Vows 网站的示例:

topic: function () {
  fs.stat('~/FILE', this.callback);
  }, 
  'after a successful `fs.stat`': {
    topic: function (stat) {
      fs.open('~/FILE', "r", stat.mode, this.callback);}, etc

因此,第二个主题没有得到 (err, stat) 之类的参数,而是得到 (stat)。

有人知道为什么会这样吗?

【问题讨论】:

  • 我想知道这是否只是他们的错误。即他们不检查他们提供的示例的一致性。您是否使用自己的代码尝试过类似的事情以确认?
  • 是的,我就是这样发现的。当我试图从回调中访问第二个参数时,我的代码一直在爆炸。

标签: node.js vows


【解决方案1】:

根据我的经验,Vows 在调用子主题时会省略 err 参数。

这可能解决了要求嵌套主题将每个err 参数与每个额外的父级一起使用的问题。您不希望出现这种情况:

topic: (err, topic1, err, topic2, err, topic3)

相反,只使用非错误参数。

topic: (topic1, topic2, topic3)

这有点令人困惑,因为 Vows 会自动截取非空的 err 参数并导致测试失败。所以无论如何你都不能使用err 参数。

【讨论】:

    【解决方案2】:

    所以无论如何你都不能使用 err 参数。

    Vows 如何确定该论点是错误的。

    有名字吗?或者总是 null-first-argument,在不返回 err 作为第一个 arg 的情况下可能不起作用?

    谢谢,

    【讨论】:

    • 这可能是一条评论
    • 但我没有 50 次重复。所以我无法评论。有解决办法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    相关资源
    最近更新 更多