集成测试,我如何包装一个在事务中更改数据库的REST调用?

时间:2010-08-02 20:19:24

标签: unit-testing rest distributed-transactions

我有这样的代码:

[Fact]
public void should_return_at_least_3_users()
{
  Rest.Call("http://localhost/admin/users/makeasfree/3");

  var response = Rest.Call<List<Users>>("http://localhost/admin/freeusers");
  response.Count.ShouldBeGreaterThan(0);
}

我试图用TransactionScope包围它但不起作用。 有没有办法在不进行整个数据库恢复的情况下回滚测试更改?

1 个答案:

答案 0 :(得分:0)

对于此问题,不太可能有任何好的解决方案,因为跨HTTP请求支持分布式两阶段提交事务会违反http请求的无状态特性。事务可以存在于REST接口之后,但它们不应放在前面。

我意识到您可能只希望事务允许您进行集成测试,但您是否真的希望使用与您的生产环境不同的环境进行集成测试。

如果您仍然不相信,那么您应该观看this视频: - )。