我已经在单元测试方面遇到了一些困难,我正在尝试在我目前正在工作的小项目中学习它,我遇到了这两个问题,希望你能帮助我解决:
1- 我的项目是一个MVC项目。我的单元测试应该从哪个级别开始?他们应该只关注业务层吗?他们还应该测试控制器上的操作吗?
2- 我有一个方法来验证用户名格式,然后访问数据库检查它是否可用。返回值是一个布尔值,表示此用户名是否可用。 对于这样的方法,是否应该创建一个单元测试? 我想测试格式验证,但是如何在不查询数据库的情况下进行检查?另外,如果格式正确,但用户名已被使用,我将得到一个false值,但验证仍然有效。我可以将这种方法解耦,但是只有在格式正确时才应该进行DB验证,因此它们应该以某种方式相互联系。 具有单元测试知识的人会如何解决这个问题?或者如何重构此方法以便能够测试它? 我可以为DB访问创建一个存根,但是如何在用户测试时将其附加到我的项目中,在本地运行时将其分离?
谢谢!
1- 我的项目是一个MVC项目。我的单元测试应该从哪个级别开始?他们应该只关注业务层吗?他们还应该测试控制器上的操作吗?
2- 我有一个方法来验证用户名格式,然后访问数据库检查它是否可用。返回值是一个布尔值,表示此用户名是否可用。 对于这样的方法,是否应该创建一个单元测试? 我想测试格式验证,但是如何在不查询数据库的情况下进行检查?另外,如果格式正确,但用户名已被使用,我将得到一个false值,但验证仍然有效。我可以将这种方法解耦,但是只有在格式正确时才应该进行DB验证,因此它们应该以某种方式相互联系。 具有单元测试知识的人会如何解决这个问题?或者如何重构此方法以便能够测试它? 我可以为DB访问创建一个存根,但是如何在用户测试时将其附加到我的项目中,在本地运行时将其分离?
谢谢!
IUsernameAvailabilityChecker
传递给函数。当你实际从MVC控制器(或其他地方)调用它时,创建并传递一个真正的IUsernameAvailabilityChecker
,它访问数据库。 - voithos