C# RavenDB中的单元测试如何正确进行
所以我的问题如下…对于一个项目,我们正在使用RavenDb和Nancy构建一个api。所以我的问题是关于单元测试…我们使用嵌入式db,它在内存中运行,正如很多次建议的那样,如何选择合适的单元测试端点。例如,我们有一个端点创建帐户。为此,我们需要有一个用户,以便他可以创建帐户。最好的模拟方法是什么 目前我们是这样做的:C# RavenDB中的单元测试如何正确进行,c#,unit-testing,nunit,ravendb,nancy,C#,Unit Testing,Nunit,Ravendb,Nancy,所以我的问题如下…对于一个项目,我们正在使用RavenDb和Nancy构建一个api。所以我的问题是关于单元测试…我们使用嵌入式db,它在内存中运行,正如很多次建议的那样,如何选择合适的单元测试端点。例如,我们有一个端点创建帐户。为此,我们需要有一个用户,以便他可以创建帐户。最好的模拟方法是什么 目前我们是这样做的: [Test] public void UserCanAddAccountToCompany() { var user = new User {
[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);
}
[测试]
public void usercanadaccounttocompany()
{
变量用户=
新用户
{
Name=Guid.NewGuid().ToString(),
Email=Guid.NewGuid().ToString(),
Pwd=“密码”,
CompanyReference=newcompanyreference{Id=Guid.NewGuid().ToString(),Name=Guid.NewGuid().ToString()}
};
var response=newtestbrowser(“用户/注册”,User).response;
var paramUserAccount=新的paramUserAccount()
{
User=response.Body.DeserializeJson().User,
Account=new Account(){Name=Guid.NewGuid().ToString()}
};
var response2=新的测试浏览器(“帐户/创建”,paramUserAccount).Response;
var res=response2.Body.DeserializeJson();
Assert.NotNull(res.Account.Id);
Assert.NotNull(res.Account.Name);
}
所以我们创建一个用户,调用用户注册端点,然后从response中获取参数,并调用create account端点。这种方法的一个明显问题是,如果您更改了注册端点,并且由于某种原因破坏了它,那么所有类似的测试都将失败
所以我的问题是…什么是正确的方法 您是集成测试,而不是单元测试。要正确地进行单元测试,您需要使用模拟对象在没有db的情况下进行测试。尽管您是对的,但您的答案非常简洁。请您指导用户如何朝这个方向迈出第一步,或者至少链接到一个类似的问题。