【问题标题】:Stubbing connect middleware存根连接中间件
【发布时间】:2014-10-14 20:52:44
【问题描述】:

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

我如何存根 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 需要它)

【问题讨论】:

    标签: javascript express connect sinon


    【解决方案1】:

    您可以创建自己的模块,导出您希望存根的方法。

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

    除了 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
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多