0

我正在尝试学习编写单元测试。我遵循存储库模式并为我的控制器创建了一个存储库。Is 支持真实和虚假的 dbcontexts,现在我准备开始编写测试。我的问题是我不知道要测试什么。

  1. 如果控制器的大部分工作是将数据传递给存储库而不是将结果传递给视图,我应该测试控制器吗?
  2. 在我的存储库中,我有如下方法。它们非常简单,是否应该进行测试?
  3. 我应该测试验证条件吗?
  4. 最重要的事情。你能给我一些asp mvc单元测试的例子吗?我想像 [method]ShouldDo[whatever] 这样的语句列表可能会有所帮助。但恐怕很难临时想出一些不那么明显的东西。也许有人愿意分享他们的一个测试文件/项目或推荐一个值得一看的开源项目?

            public virtual void Update(T entity) 
            {
                Db.Attach(entity);
                Db.SaveChanges();
            }
    
            public virtual void Save(T entity)
            {
                Db.Add(entity);
                Db.SaveChanges();
            }
    
            public virtual void Remove(T entity)
            {
                Db.Delete(entity);
                Db.SaveChanges();
            }
    
4

2 回答 2

1
  1. 如果控制器的大部分工作是将数据传递给存储库而不是将结果传递给视图,我应该测试控制器吗?

每个定义的控制器应该只是模型和视图之间的适配器。因此它不应该处理(即业务规则)信息。

听起来你的控制器没有,这都很好。如果您正在使用视图模型,那么只有一件事可能会出错:那就是您没有正确处理 ModelState(即,如果出现问题,请报告)。

因此,如果您想对此进行测试,请继续。

在我的存储库中,我有如下方法。它们非常简单,是否应该进行测试?

不,因为您没有验证传入数据是否正确。测试只是集成测试而不是单元测试。

我应该测试验证条件吗?

如果您想确保验证应该验证的内容。

最重要的事情。你能给我一些asp mvc单元测试的例子吗?我想像 [method]ShouldDo[whatever] 这样的语句列表可能会有所帮助。但恐怕很难临时想出一些不那么明显的东西。也许有人愿意分享他们的一个测试文件/项目或推荐一个值得一看的开源项目?

取决于你想测试什么。

于 2012-09-10T08:25:06.360 回答
1

不幸的是,这个话题太广泛了,无法在这里给出一个简单的答案。谷歌是你的朋友。我在 Google 上搜索了“为 c# 编写单元测试”,得到了超过 200 万条回复。关于如何以及何时编写单元测试有许多相互竞争的哲学。我建议你研究——从谷歌开始——阅读几种方法,并根据你自己的偏好、编码风格和你试图解决的具体问题来决定哪种方法最合适。

于 2012-09-10T01:31:22.447 回答