2

来自誓言网站:“当 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)。

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

4

2 回答 2

1

根据我的经验,Vowserr在调用子主题时省略了参数。

这可能解决了要求嵌套主题err与每个额外父项一起接受每个参数的问题。你不想要这种情况:

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

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

topic: (topic1, topic2, topic3)

这有点令人困惑,因为 Vows 会自动截取非空err参数并通过测试。因此,无论如何,您将永远无法使用该err论点。

于 2012-03-01T20:01:19.027 回答
0

因此,无论如何,您将永远无法使用 err 参数。

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

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

谢谢,

于 2013-08-02T03:58:05.783 回答