使用 Moq 和 native VS 测试框架。我正在尝试测试传入值的递归函数:
public bool AuthenticateByDomain(string domainName, string password, string username, string email)
{
用于查找实体:
// look for an existent domain name.
var matchFound = this.FindDomainPasswordMatch(domainName, password);
如果找到,则查找存在的用户名(该帐户已存在):
if (matchFound)
{
var account = this.GetByEmail(null, email);
if (account != null)
{
如果未找到,请根据提供的电子邮件和用户名创建帐户:
var uAccount = this.CreateAccount(username, password, email, domainName);
然后递归地调用自己,(大概)调用
GetByEmail()
满足并调用验证分支。我发现了几个 Moq 与存储库交互的示例,但无法确切了解如何解决我的特定问题 - 测试存储库是否更新并且递归成功。我_能够统一获取顶级中找到的每个方法 - 我是否声明足够好并继续前进?这是持久性测试吗?
最佳答案
在轻松测试某些东西时遇到麻烦可能是糟糕的设计决策的一个指标。如果您真的需要这种递归,请让自己清楚。
将这两个调用拆分为 CreateAccount
不是更容易吗?和 FindDomainPasswordMatch
并在设计上将它们分开。也许我没有完全理解你的观点,但递归本身似乎没有真正的“递归”用途。它只是一个带有重复代码的“懒惰”调用。我建议你将这些机制与他们自己分开。这也使测试变得更加容易,并且您应该不会在测试这些方法时遇到任何问题。
希望这可以帮助。
关于unit-testing - 单元测试递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15156631/