首页 > 解决方案 > Dredd:Ruby-hooks:为多个请求执行相同的钩子

问题描述

我面临的问题是:

我有一个请求,需要为此请求检查 3 种类型的响应。每次我需要在发送之前稍微修改我的请求正文。

dredd --names:
info: Users > User Operations > Update User > Example 1
skip: PUT (204) myurl/users/userid-123
info: Users > User Operations > Update User > Example 2
skip: PUT (422) myurl/users/userid-123
info: Users > User Operations > Update User > Example 3
skip: PUT (429) myurl/users/userid-123

我的想法是在之前的钩子中做一些类似“黄瓜式”的事情:

before(/^Users > User Operations > Update User > Example (1|2|3)$/) do |myvar|
  Here run loop from 1 to 3 and do necessary changes

但是经过几次试验,这似乎不起作用,看起来 ruby​​-hooks 不支持名称中的变量。

任何想法对于这种情况来说什么是正确的方法,因为这里似乎不适合为每个请求设置单独的前钩子?

标签: dredd

解决方案


我认为 Ruby 挂钩不支持事务名称中的正则表达式。一个简单的解决方法是捕获所有并区分钩子本身的事务:

before_each do |transaction|
  if transaction.name.match(/Example (1|2|3)$/)
    ...
  end
end

推荐阅读