RavenDB中的单元测试如何正确进行



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

目前我们是这样做的:

[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);
}

因此,我们创建一个用户,调用用户注册端点,然后从响应中获取参数,并调用create帐户端点。这种方法的明显问题是,如果您对注册端点进行了更改,并且由于某种原因破坏了它,那么所有类似的测试都将失败。

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

您是集成测试,而不是单元测试。为了正确地进行单元测试,您需要使用mocking对象在没有数据库的情况下进行测试。

最新更新