【问题标题】:Unit testing in RavenDB how to do it properlyRavenDB 中的单元测试如何正确执行
【发布时间】:2014-02-27 10:21:59
【问题描述】:

所以我的问题如下......对于一个项目,我们正在使用 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);
}

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

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

【问题讨论】:

    标签: c# unit-testing nunit ravendb nancy


    【解决方案1】:

    您是集成测试,而不是单元测试。要正确进行单元测试,您需要使用模拟对象在没有 db 的情况下进行测试。

    【讨论】:

    • 虽然你是对的,但你的答案非常压缩。您能否指导用户如何朝着这个方向迈出第一步,或者至少链接到类似的问题。
    猜你喜欢
    • 1970-01-01
    • 2019-09-06
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 2012-06-01
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    相关资源
    最近更新 更多