Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用内部异常对代码进行单元测试?_C#_.net_Unit Testing_Moles_Inner Exception - Fatal编程技术网

C# 如何使用内部异常对代码进行单元测试?

C# 如何使用内部异常对代码进行单元测试?,c#,.net,unit-testing,moles,inner-exception,C#,.net,Unit Testing,Moles,Inner Exception,我希望获得以下代码的一些单元测试覆盖率: public static class ExceptionExtensions { public static IEnumerable<Exception> SelfAndAllInnerExceptions( this Exception e) { yield return e; while (e.InnerException != null) { e = e.InnerExcep

我希望获得以下代码的一些单元测试覆盖率:

public static class ExceptionExtensions {
   public static IEnumerable<Exception> SelfAndAllInnerExceptions(
      this Exception e) {
      yield return e;
      while (e.InnerException != null) {
         e = e.InnerException; //5
         yield return e; //6
      }
   }
}
公共静态类例外扩展{
公共静态IEnumerable self和allinerException(
此例外(e){
收益率e;
while(e.InnerException!=null){
e=e.InnerException;//5
收益率返回e;//6
}
}
}
编辑:看来我不需要摩尔来测试这个代码。另外,我有一个错误,第5行和第6行颠倒了。

这就是我得到的(毕竟不需要痣):


你为什么要用鼹鼠来测试呢?该功能看起来可以通过传统的单元测试技术进行测试。
[TestFixture]
public class GivenException
{
   Exception _innerException, _outerException;

   [SetUp]
   public void Setup()
   {
      _innerException = new Exception("inner");
      _outerException = new Exception("outer", _innerException);
   }

   [Test]
   public void WhenNoInnerExceptions()
   {
      Assert.That(_innerException.SelfAndAllInnerExceptions().Count(), Is.EqualTo(1));
   }

   [Test]
   public void WhenOneInnerException()
   {
      Assert.That(_outerException.SelfAndAllInnerExceptions().Count(), Is.EqualTo(2));
   }

   [Test]
   public void WhenOneInnerException_CheckComposition()
   {
      var exceptions = _outerException.SelfAndAllInnerExceptions().ToList();
      Assert.That(exceptions[0].InnerException.Message, Is.EqualTo(exceptions[1].Message));
   }
}