Pact ruby 契约验证:失败/错误:预期(头\u值)。要匹配头(名称,预期头\u值)

Pact ruby 契约验证:失败/错误:预期(头\u值)。要匹配头(名称,预期头\u值),pact-ruby,Pact Ruby,使用pact验证响应头是否与使用者和提供者匹配。 在提供者端运行pact验证时会出现以下错误: Failure/Error: expect(header_value).to match_header(name, expected_header_value) Expected header "abc" to equal "xyz", but was nil 但是,当我检查我的响应头时,它会给我预期的值xyz 以下是我试图验证的pact文件示例: "interactions": [ { "de

使用pact验证响应头是否与使用者和提供者匹配。 在提供者端运行pact验证时会出现以下错误:

Failure/Error: expect(header_value).to match_header(name, expected_header_value)
Expected header "abc" to equal "xyz", but was nil
但是,当我检查我的响应头时,它会给我预期的值xyz

以下是我试图验证的pact文件示例:

"interactions": [
{
  "description": "a request to do something",
  "request": {
    "method": "get",
    "path": "/example"
  },
  "response": {
    "status": 200,
    "headers": {
      "abc": "xyz"
    }
  }
}]

我是新来的。任何帮助都将不胜感激

虽然这是一篇老文章,但我希望这将有助于任何看到这篇文章的人。 我不熟悉ruby,但是如果您使用的是基本的HTTP Rest请求,则需要在“withRequest”上添加accept头,并在“withRespondWith”上添加预期头。您可以使用Postman查看请求和响应头;JavaScript示例:

describe('When a request is made to get all <resources>', () => {
    beforeAll(() =>
      provider.setup().then(() => {
        provider.addInteraction({
          uponReceiving: 'a request to receive to receive all...',
          withRequest: {
            method: 'GET',
            path: '/<resource>',
            // Default headers from Axios documentation
            headers: { Accept: "application/json, text/plain, */*" }
          },
...

willRespondWith: {
            // expected headers
            headers: { "Content-Type": "application/json; charset=utf-8" },
...

标题命名的标准约定是Abc首字母大写,机架中间件将在您的Abc上执行一些翻译,并在过程中将其转换为Abc。试试那种格式。嗨@Bethskrrie,我试过了。我得到了相同的问题,标题值为零。但是,当我在控制台response.headers[:abc]或response.headers[:abc]上调试/打印时,我看到预期值存在。下面是一个工作示例,看看您是否可以重新创建问题