c# – 从模拟对象构造函数中抛出异常

c# – 从模拟对象构造函数中抛出异常,第1张

概述假设:VS2010,.NET 4,C#,NUnit,Moq 我是TDD的新人,在通过项目工作时遇到这个问题. 给定类: public abstract class MyFileType{ public MyFileType(String fullPathToFile) { if (!File.Exists(fullPathToFil 假设:VS2010,.NET 4,C#,NUnit,Moq

我是TDD的新人,在通过项目工作时遇到这个问题.

给定类:

public abstract class MyfileType{                    public MyfileType(String fullPathTofile)    {        if (!file.Exists(fullPathTofile))        {            throw new fileNotFoundException();        }        // method continues    }}

我试图使用以下方法进行测试:

[Test][ExpectedException(typeof(System.IO.fileNotFoundException))]public voID MyfileType_CreationWithNonexistingPath_ExceptionThrown(){    String nonexistingPath = "C:\does\not\exist\file.ext";    var mock = new Mock<MyfileType>(nonexistingPath);}

测试失败,NUnit报告的异常从未被抛出.

我确实发现一个section in the NUnit docs谈论断言与例外,但这些例子似乎并不像我想要做的.我仍然开始使用NUnit和Moq,所以我可能会这样做错了.

更新:

为了帮助澄清为什么这个例子使用抽象类,它是一个系列文件类型的基类,只有数据的加载和处理在子类型之间不同.我最初的想法是将open / setup的逻辑放在一个基类中,因为它对于所有类型都是相同的.

解决方法 如果你必须让这个类是抽象的,那么我们应该只是实现它,因为它是(简单):
MSDN: an abstract class

所以,同意(与alexanderb),这里可能不需要一个模拟,还有Stecy在.Throws NUnit Assert扩展,你可以在测试中创建一个类,调用基类如下:

using System;using System.IO;namespace fileFotFoundException {    public abstract class Myfile {        protected Myfile(String fullPathTofile) {            if (!file.Exists(fullPathTofile)) throw new fileNotFoundException();        }    }}namespace fileFotFoundExceptionTests {    using fileFotFoundException;    using NUnit.Framework;    public class SubClass : Myfile {        public SubClass(String fullPathTofile) : base(fullPathTofile) {            // If we have to have it as an abstract class...        }    }    [TestFixture]    public class MyfileTests {        [Test]        public voID Myfile_CreationWithNonexistingPath_ExceptionThrown() {            const string nonExistingPath = "C:\does\not\exist\file.ext";            Assert.Throws<fileNotFoundException>(() => new SubClass(nonExistingPath));        }    }}
总结

以上是内存溢出为你收集整理的c# – 从模拟对象构造函数中抛出异常全部内容,希望文章能够帮你解决c# – 从模拟对象构造函数中抛出异常所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1262941.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存