2014-02-27 43 views
1

所以我的问题如下...对于我们使用RavenDb和Nancy构建api的项目。所以我的问题是关于单元测试......我们使用嵌入数据库,它在内存中运行多次。 ,如何正确的单元测试终点。例如,我们有一个端点创建帐户。为此,我们需要有一个用户,以便他可以创建帐户。什么是最好的方法来模拟?RavenDB中的单元测试如何正确执行

目前我们做的是这样的:

[Test] 
public void UserCanAddAccountToCompany() 
{ 
    var user = 
     new User 
     { 
      Name = Guid.NewGuid().ToString(), 
      Email = Guid.NewGuid().ToString(), 
      Pwd = "password", 
      CompanyReference = new CompanyReference { Id = Guid.NewGuid().ToString(), Name = Guid.NewGuid().ToString() } 
     }; 

    var response = new TestBrowser<User>("User/SignUp", user).Response; 

    var paramUserAccount = new ParamUserAccount() 
    { 
     User = response.Body.DeserializeJson<Result>().User, 
     Account = new Account() { Name = Guid.NewGuid().ToString() } 
    }; 

    var response2 = new TestBrowser<ParamUserAccount>("account/create", paramUserAccount).Response; 
    var res = response2.Body.DeserializeJson<Result>(); 

    Assert.NotNull(res.Account.Id); 
    Assert.NotNull(res.Account.Name); 
} 

所以我们创建一个用户,呼叫用户注册端点,然后从响应采取PARAMS和呼叫科瑞accoutn终点。这种方法的一个显而易见的问题是,如果您在注册终结点上做了一些改变,并且由于某种原因而中断了它,那么所有像这样的测试都将失败。

所以我的问题是...什么是正确的方法呢?

回答

0

您是集成测试,而不是单元测试。要正确进行单元测试,您需要使用模拟对象来测试没有数据库。

+1

虽然你是对的,但你的答案是非常压缩的。您能否指导用户如何在这个方向上迈出第一步,或者至少链接到类似的问题。 –

相关问题