【问题标题】:Mocking with Nock, mock only a specific route with the same host用 Nock 模拟,只模拟同一主机的特定路由
【发布时间】:2018-05-27 16:29:54
【问题描述】:

我正在使用 Nock (https://github.com/node-nock/nock) 模拟一个由我需要在我的应用程序中测试的端点调用的底层服务。在端点的实现中,我多次调用这个底层服务:

我想知道是否可以只模拟其中一个。让我们说这个: http://samehost/specificrsc2/

目前我无法做到这一点。因为我收到这样的错误:

'FetchError: request to http://samehost/specificrsc1/ failed, reason: 
 Nock: No match for request {\n  "method": "GET",\n  "url": 
"http://samehost/specificrsc1/",

这就是我嘲笑底层服务的方式:

const mockUnderlyCall = nock('http://samehost');
mockUnderlyCall.get('/samehost/specificrsc1').reply(200, mockData)

我也试试:

const mockUnderlyCall = nock('http://samehost/samehost/specificrsc1');
mockUnderlyCall.get('').reply(200, mockData)

谢谢!

【问题讨论】:

  • @OP:我面临同样的问题。您找到解决方法了吗?
  • @eol 不,我们必须模拟所有端点,但为了简化任务,我们使用了一个名为 node-replay (github.com/assaf/node-replay) 的框架,它允许您记录来自底层服务的响应.也许这可以帮助你。

标签: node.js integration-testing nock


【解决方案1】:

我想知道是否可以只模拟其中一个

是的,使用allowUnmocked 选项。

const mockUnderlyCall = nock('http://samehost', {allowUnmocked: true});

注意,这在documentation 中列出了nock。

【讨论】:

    猜你喜欢
    • 2017-07-24
    • 2020-01-17
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 2021-03-27
    • 1970-01-01
    • 2021-11-05
    相关资源
    最近更新 更多