我一直在考虑端到端测试API调用的方法,而像POST / PUT / DELETE这样的问题最让我困扰。
原因是,nunits没有按顺序运行 - 如果他们被明确要求,他们没有必要等待之前的测试完成。那么如何测试测试数据呢? e.g。
因此,在测试结束时,我没有污染我的数据库,并确保我的所有端点都提供端到端功能?
在注入实际存储库以设置和拆除数据库条目之间,最后我决定:
[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),这打破了单个工作单元的想法...... 或者可以说:这确实测试了一个单独的工作单元 - 整个发布,放置和删除周期。
有更好的方法吗?
由于