API集成测试 - 在单个测试方法中测试Post / Put / Delete是不好的做法吗?

时间:2017-06-20 12:29:51

标签: unit-testing asp.net-web-api2 integration-testing

我一直在考虑端到端测试API调用的方法,而像POST / PUT / DELETE这样的问题最让我困扰。

原因是,nunits没有按顺序运行 - 如果他们被明确要求,他们没有必要等待之前的测试完成。那么如何测试测试数据呢? e.g。

  • 发布testdata json
  • 发布testdata更新
  • 获取testdata
  • 删除testdata

因此,在测试结束时,我没有污染我的数据库,并确保我的所有端点都提供端到端功能?

在注入实际存储库以设置和拆除数据库条目之间,最后我决定:

 [Test]
    public void PostAndPutAndDeleteWorkWithoutErrors()
    {
        //setup
        var client = JsonClient.GetClient();
        var request = GenerateNewRequest();

        //act post
        var httpResponse = client.PostJson(uri, request );

        //assert
        httpResponse.StatusCode.ShouldBe(HttpStatusCode.OK);

        //act put
        httpResponse = client.PutJson(uri, request );

        //assert
        httpResponse.StatusCode.ShouldBe(HttpStatusCode.OK);

        //act delete
        httpResponse = client.DeleteJson(uri, request .Name);

        //assert
        httpResponse.StatusCode.ShouldBe(HttpStatusCode.OK);
      }

现在这个测试测试的东西多于一个(Post / Put / Delete),这打破了单个工作单元的想法...... 或者可以说:这确实测试了一个单独的工作单元 - 整个发布,放置和删除周期。

有更好的方法吗?

由于

0 个答案:

没有答案