Vows.js - количество аргументов this.callback возвращается к теме против vow - PullRequest
2 голосов
/ 03 сентября 2011

С сайта обетов: «Когда вызывается 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).

Кто-нибудь знает, почему это так?

Ответы [ 2 ]

1 голос
/ 02 марта 2012

По моему опыту, Vows пропускает аргумент err при вызове подтем.

Это, вероятно, решает проблему с требованием, чтобы вложенные темы принимали каждый аргумент err с каждым дополнительным родителем.Вам не нужна такая ситуация:

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

Вместо этого просто работайте с аргументами, отличными от ошибочных.

topic: (topic1, topic2, topic3)

Это несколько сбивает с толку, поскольку Vows автоматически перехватывает ненулевое значение err аргумент и не проходит тест.Так что вы никогда не сможете использовать аргумент err.

0 голосов
/ 02 августа 2013

Таким образом, вы никогда не сможете использовать аргумент err.

Как Vows определил, что аргумент является ошибочным.

Это по имени?Или всегда аргумент null-first-аргумент, который может не работать в случаях, которые не возвращают err в качестве первого аргумента?

Спасибо,

...