javascript - stub 连接中间件

标签 javascript express sinon node.js-connect

我有一个中间件(coffeescript):

 basic = (req, res, next) ->
    return next() if not app.settings.auth?
    express.basicAuth(app.settings.auth.username, app.settings.auth.password) req, res, next

如何 stub basicAuth 函数来控制流程?

我已经尝试过:

express = require 'express'
sinon.stub express, 'basicAuth'

并得到错误:

 TypeError: Cannot set property basicAuth of function createApplication() {
  var app = connect();
  utils.merge(app, proto);
  app.request = { __proto__: req };
  app.response = { __proto__: res };
  app.init();
  return app;
} which has only a getter

我也尝试过:

connect = require 'connect'
sinon.stub connect, 'basicAuth'

出现错误是因为 connect 不是我的应用程序的直接可用依赖项(express 需要它)

最佳答案

您可以创建自己的模块,导出您想要 stub 的方法。

# stub.coffee
express = require 'express'

# export basicAuth as a stub-friendly export
module.exports.basicAuth = express.basicAuth

您需要这个来代替 Express 或除了 Express 之外。

stubpress = require 'stubbableExpress'

basic = (req, res, next) ->
  return next() if not app.settings.auth?
  stubpress.basicAuth(app.settings.auth.username, app.settings.auth.password) req, res, next

这给了你一些可以 stub 的东西:

stubpress = require 'stubbableExpress'
sinon.stub(stubpress, 'basicAuth')

关于javascript - stub 连接中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26370104/

相关文章:

node.js - 如何将 ObjectId 传递到 POST 请求中?

javascript - 删除水平条形图中的顶部水平线 (Chart.js 2)

javascript - 将这个外部制作的表格嵌入我的网站

node.js - 在 node.js 中设置 mssql-session-store

node.js - Winston/Node.js 如何仅为特定路线添加运输?

javascript - 打印网站丢失了它的 css

javascript - 如何动态内联通过文件加载器加载的 SVG?

async-await - 获取类型错误 : Cannot stub non-existent own property when stubbing async method

javascript - Mocha 测试模拟功能