3

使用 Moq 和本机 VS 测试框架。我正在尝试测试传入值的递归函数:

public bool AuthenticateByDomain(string domainName, string password, string username, string email)
    {

用于查找实体:

// look for an existent domain name.
var matchFound = this.FindDomainPasswordMatch(domainName, password);

如果找到,则查找存在的UserName(帐户已存在):

        if (matchFound)
        {
            var account = this.GetByEmail(null, email);
            if (account != null)
            {

如果找到,请根据提供的电子邮件和用户名创建帐户:

var uAccount = this.CreateAccount(username, password, email, domainName);

然后递归地调用自身,其中(可能)GetByEmail()满足调用并调用身份验证分支。

我发现了一些 Moq 与存储库交互的示例,但无法确切了解如何解决我的特定问题 - 测试存储库是否已更新并且递归是否成功。我能够统一获取顶层中的每个方法 - 我是否声明足够好并继续前进?这是一个持久性测试吗?

4

1 回答 1

4

轻松测试某些东西时遇到麻烦可能是设计决策不佳的一个指标。如果您真的需要递归,请让自己清楚。

将这两个调用拆分为设计方式并将它们分开CreateAccount不是更容易吗?FindDomainPasswordMatch也许我没有完全理解你的观点,但递归本身似乎没有真正的“递归”用途。它只是一个带有重复代码的“懒惰”调用。我建议您将这些机制与它们本身分开。因此,这也使测试变得更加容易,并且您在测试这些方法时应该没有任何问题。

希望这可以帮助。

于 2013-03-01T12:34:28.563 回答