如何使用stubby4j存根某些请求并为其他人调用实际服务

时间:2016-12-20 03:41:46

标签: rest mocking stub stubbing stubby4j

我正在使用stubby4j来存根一些服务端点。我目前正在对那些非常沉重且不那么复杂的模拟进行存根处理,但我想为其余的端点调用真正的服务。

这样的事情:

/heavy-call-1 => stub service
/heavy-call-2 => stub service
/lightweight-call-1 => real service
/lightweight-call-2 => real service

有没有办法用这个工具实现这个目标,还是应该考虑使用另一个?

2 个答案:

答案 0 :(得分:1)

您实际上可以使用stubby调用真实服务并首次记录响应,因此下一个请求将使用此记录的响应。 你可以这样做的方法是在yaml文件中的存根响应体中指定一个URL,如下所示:

-  request:
      url: /1.1/direct_messages.json
      query:
         since_id: 240136858829479935
         count: 1
   response:
      headers:
         content-type: application/json
      body: https://api.twitter.com/1.1/direct_messages.json?since_id=240136858829479935&count=1

您可以在stubby github repo中找到更多信息:https://github.com/azagniotov/stubby4j/blob/master/README.md#key-features

希望这有帮助!

答案 1 :(得分:0)

您是否正在使用Webpack?如果是这样,您可以匹配不同的域。例如:

const config = merge(common, {
  devtool: 'inline-source-map',
  mode: 'development',
  devServer: {
    historyApiFallback: true,
    port: 3000,
    hot: true,
    proxy: [
      { path: '/heavy-all-1 ', target: 'http://localhost:8882' }, //stubby
    ],
  },
  plugins: [
    new webpack.HotModuleReplacementPlugin(),
    new webpack.DefinePlugin({
      'process.env.NODE_ENV': JSON.stringify('development'),
    }),
  ],
});

不带前缀的URL将不会被存根。