代码之家  ›  专栏  ›  技术社区  ›  Édouard Lopez

除了与Pact的提供者交互声明之外,我们还需要断言吗?

  •  0
  • Édouard Lopez  · 技术社区  · 4 年前

    我在做 pact 我经常看到这样的例子,在合同测试部分对请求的响应进行断言,比如

    test('Check endpoint for post questions on success', async () => {
      await provider.addInteraction(…);
    
      const response = await createQuestion(…);
    
      expect(response.status).toBe(201); // <------------
    });
    

    问题

    合同测试是否有附加价值,可以在请求的响应中添加这样的断言?或者声明交互嵌入了合同测试的全部价值。

    0 回复  |  直到 4 年前
        1
  •  0
  •   Matthew Fellows    4 年前

    简言之,没有。

    我个人不会这么说,因为只是检查一下,Pact做了你要求它做的事情——即测试模拟。

    将Pact测试视为API客户机的单元测试,它碰巧也会生成一个合同。

    因此,更重要的是检查正在测试的API客户端的行为,Pact将在稍后检查提供者的真实响应。

    在你的情况下,我希望 createQuestion 返回一些有用的数据(或潜在的 Question 域模型),所以您应该检查对象是否正确。例如

    const question = await createQuestion(...);
    expect(question.id).toBeDefined();