PACT Provider验证:需要一个数组但有哈希值

时间:2018-11-27 15:46:43

标签: javascript arrays provider pact

在消费者一级的测试是:

describe('Listing first level taxonomies', () => {
    before(() => {
        return provider.addInteraction({
            given: 'GET call for first level taxonomies',
            uponReceiving: 'Get object for listing first level 
                            taxonomies',
            withRequest: {
                method: 'GET',
                path: '/api/taxonomies/8061159/taxons?deleted=false',
            },
            willRespondWith: {
                status: 200,
                headers: { 'Content-Type': 'application/json' },
                body: firstChild
            }
        });
    });


const firstChild = eachLike({
'name': like('Geo'),
'taxons': [
    eachLike({
        'id': like(115590),
        'name': like('Africa'),
        'hasChildren':like (false)
    })
  ]
});

当我在提供商级别进行验证时,出现以下错误:     期望一个数组但是得到一个哈希     ({“ name” =>“ Demo分类法”,“ taxon” =>     [{“ id” => 8145188,“ name” =>“ manojtaxon”,      “ childCategoryName” =>“你好”,      “ hasChildren” => true}     出现完全错误:     https://pastebin.com/XvB17SXY

请帮助我解决问题 我认为数组大小在提供程序级别上更多,这就是为什么 失败。尽管我添加了like和eachLike(仍然没有     解决了)。

1 个答案:

答案 0 :(得分:0)

问题是您的匹配器不正确:

应该是这样的:

const firstChild = like({
  'name': 'Geo',
  'taxons': eachLike({
          'id': 115590,
          'name': 'Africa',
          'hasChildren': false
      })
  });                          

请注意删除了[]

此外,您可以避免在like中使用eachLike语句,因为默认情况下是隐含的。如果您需要使用其他匹配器(例如term,则可以覆盖该行为,但您似乎只是在这里使用like)。