javascript - 如何在 javascript 全局命名空间中 stub /模拟函数

标签 javascript testing mocking

我正在尝试在测试期间 stub /模拟/覆盖函数调用,该函数调用将日志写入数据库。

function logit(msg) {
  writeMessageToDb(msg);
}

function tryingToTestThisFunction(){
  var error = processSomething();
  if (error) {
    logit(error);
  }
}

我想要logit()在测试期间简单地打印到控制台...并在 isTesting() 中执行“logit()”if/else block 功能不是一个选项。

这是否可能不包括一些额外的模拟框架。我目前正在使用 JsTestDriver用于单元测试并且没有机会评估任何模拟框架。目前一个理想的解决方案是在没有其他框架的情况下处理这个问题。

最佳答案

我使用 Jasmine 和 Sinon.js(使用 Coffeescript),下面是我如何删除 confirm()例如,只返回 true 的方法。

beforeEach ->
  @confirmStub = sinon.stub(window, 'confirm')
  @confirmStub.returns(true)

afterEach ->
  @confirmStub.restore()

关于javascript - 如何在 javascript 全局命名空间中 stub /模拟函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4486324/

相关文章:

testing - "Mock"带有 Protractor、Cucumber 和 Chai 的后端 http 响应

unit-testing - 使用 jest stub 函数

php - 为什么在测试服务器上开发不好?

javascript - 如何使用 ajax 在 Rails 中分配和访问 javascript 变量

javascript - 如何用ExtJs ajax responseText替换元素

javascript - 困在 JavaScript 中

Java dbUnit CRUD 测试错误

java - 使用 JMockit 中的现有类模拟类(替换 `redefineMethods` )

c# - 即使有 DoNotCallBase,Nsubstitute 在 When 中调用方法

javascript - 动态 JavaScript 在使用 PreventDefault 进行限制后允许字符输入