簡體   English   中英

誓言:測試異步交織

[英]Vows: Testing Asynchronous Interleaving

有沒有一種方法可以測試(潛在的)異步功能與誓言的交織?

例如:

// Topic portion
var user = new User('jacob')
user.set('email,'foo@bar.com')
user.save() // a
user.set('email',derp@cherp.com')
user.save() // b
user.refresh(this.callback) // Reload from database

// Callback
assert.equals(user.email,'derp@cherp.com')

兩次保存之間可能存在競爭狀況。 在編寫測試時,我想確保我的API確保b最后完成(並且我們對於電子郵件具有正確的最終值)。 按照編寫的方式,測試有時會同時通過。

這是誓言文檔中的示例:

嵌套上下文充當嵌套回調,並將返回參數傳遞給下一個上下文。

文件: http//vowsjs.org/

{ topic: function () {
    fs.stat('~/FILE', this.callback);
  },
  'after a successful `fs.stat`': {
    topic: function (stat) {
      fs.open('~/FILE', "r", stat.mode, this.callback);
    },
    'after a successful `fs.open`': {
      topic: function (fd, stat) {
        fs.read(fd, stat.size, 0, "utf8", this.callback);
      },
      'we can `fs.read` to get the file contents': function (data) {
        assert.isString (data);
      }
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM