unit-testing - 在 Node.js 的单元测试中 stub 依赖项

标签 unit-testing node.js mocking mocha.js stub

我开始进行 Node.js 单元测试,并且一直在调查 Node.js 中最常用的单元测试框架。我想从最常用的框架开始,只是为了让事情变得更容易,因为可能有更多关于它的信息。根据许多网站的说法,这可能是 Mocha 。

虽然我了解这个模块用于进行集成测试,但我真的不知道如何通过使用 stub 依赖项等功能来使用它。我看到 mocha 不提供模拟/ stub 功能,所以我真的不知道人们通常如何处理这些问题。

所以我想知道哪些模块现在最流行用于进行单元测试、 stub 依赖项...一个简短的示例就很好了。

谢谢

最佳答案

当前在许多 Node.js 项目中组合在一起的模块套件似乎是:

  • Mocha对于实际的测试工具本身
  • Chai用于断言
  • Sinon用于模拟/ stub

所有这些都可以在 Node.js 和浏览器中工作,这对包括我在内的许多人都很重要。正如您所期望的,有很多选择,尽管当谈到 mock 和 stub 时,我相信Sinon显然是当前流行的选择。

这是一个使用所有这些库的 Coffeescript 的小示例。它测试当您填写登录表单并提交时,您的信息是否正确传递到 API。

describe "UserSignInView.signIn", ->
  it "should submit the user credentials", ->
    sinon.spy _OT.api, "sendJSON"
    testUser =
      email: "test.user@othenticate.com"
      password: "password"
    $("#OT_signInForm .OT_email").val(testUser.email).change()
    $("#OT_signInForm .OT_password").val(testUser.password).change()
    $("#OT_signInForm .OT_signInButton").click()
    assert.ok _OT.api.sendJSON.called
    credentials = _OT.api.sendJSON.lastCall.args[0]
    assert.equal credentials.email, testUser.email
    assert.equal credentials.password, testUser.password
    options = _OT.api.sendJSON.lastCall.args[1]
    assert.equal options.url, "/othen/users/authenticate"
    assert.isDefined options.error
    assert.isDefined options.success

关于unit-testing - 在 Node.js 的单元测试中 stub 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13671657/

相关文章:

mocking - 实现接口(interface)中未定义的获取和设置的模拟对象

unit-testing - TDD 如何处理异常和参数验证?

python - 暗示类正在实现协议(protocol)的正确方法?

visual-studio - 对战队 : A concrete example of the use of the TestContext property using Microsoft Unit Testing Framework?

javascript - 获取支持的货币列表

node.js - 在 socket.io 中,压缩 perMessageDeflate 不起作用

java - SoapUI MockServices 返回 html 而不是 xml 响应

java - kafka生产者单元测试(java)

node.js - 在 Node 中排队任务

c# - 修改已设置的 mock 属性