【问题标题】:Can you give me a case where I would need to wait for a callback to complete in a unit test?你能给我一个我需要等待回调在单元测试中完成的案例吗?
【发布时间】:2013-05-29 05:35:19
【问题描述】:

我想不出在 JavaScript 中我需要一个单元测试来等待回调完成的情况。

单元测试是关于测试最小的部分,即单元。所以我会写测试:

  • 对于我正在测试的函数
  • 用于回调函数
  • 使用模拟(或间谍)检查函数调用回调是否正确

但我在 Jasmine 或 Mocha 等测试框架中看到它们允许异步测试。我想这在集成测试(或 BDD)中有意义,但在单元测试中没有意义。您是否有需要异步测试的单元测试示例?

【问题讨论】:

    标签: javascript unit-testing tdd


    【解决方案1】:

    我同意你的观点,异步测试与行为驱动开发 (BDD) 测试更相关,在这种测试中,你正在创建真实世界的用例,而不是检查每个对象的方法列表并检查它们是否按预期执行。

    至于单元测试,我想说异步测试仍有一席之地。假设您正在测试一个类,并且其中一个方法对 REST 入口点执行 AJAX 请求以获取一些数据并返回结果(例如验证用户),这仍然是单个计算单元,即:

    Auth.validate({user: "smithj", pass: "mypwd"});
    

    但是,如果您同步执行测试,您将无法检查该方法是否已正确执行,因为您将在从远程入口点获得响应之前检查结果。

    【讨论】:

    • 这是一个很好的例子,但我认为这已经是一个集成测试,因为您同时测试了 JS 代码和 REST API。您的测试依赖于 REST API,因此它不再是单元测试。
    • 有点晚了,但实际上我必须同意 Steven - 例如,如果您使用 [github.com/appendto/jquery-mockjax] Mockjax 来模拟​​ Ajax 调用,那么它是 100% 纯单元测试...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 2019-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多