我有一个中间件(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/