2013-03-01 108 views
2

使用起订量和本地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()满足和验证分支被调用。

我发现最小起订量与存储库交互的例子,但是一直没能清楚地看到如何处理我的具体的问题 - 测试该库得到更新和递归成功。我能够单位获得在顶层找到的每一种方法 - 我是否已经宣布足够好,继续前进?这是一个持久性测试吗?

+3

哪种方法(行为)要测试?你在嘲笑哪些依赖关系? – 2013-03-01 11:33:38

+0

代码中没有任何内容可以使用Moq进行测试。我们需要整个代码。 – 2013-03-01 19:49:32

回答

2

在遇到问题时容易测试的东西可能是糟糕的设计决策的指标。让自己清楚,如果你真的需要这种递归。

那岂不是更容易分裂这两个调用的createAccount和FindDomainPasswordMatch和它们分开设计的,明智的。也许我完全没有看到你的观点,但递归本身似乎没有真正的“递归”使用。它只是一个带有重复代码的“懒惰”调用。我会建议你把这些机制从他们自己分开。这使得测试更容易,因此测试这些方法时不应该有任何问题。

希望这会有所帮助。