Moq的使用】的更多相关文章

一.概念 Moq是利用诸如Linq表达式树和Lambda表达式等·NET 3.5的特性,为·NET设计和开发的Mocking库.Mock字面意思即模拟,模拟对象的行为已达到欺骗目标(待测试对象)的效果. Moq模拟类类型时,不可模拟密封类,不可模拟静态方法(适配器可解决),被模拟的方法及属性必须被virtual修饰. 二.示例 //待模拟对象 public interface ITaxCalculate { decimal GetTax(decimal rawPrice); } public c…
这个篇幅里面,记录单元测试与Moq模拟包的知识点. 单元测试 每一个模块,都应该有对应的单元测试.单元测试可以保证你的代码准确性,大大减少出现BUG的几率.一个好的单元测试,也是重构代码必不可少的部分. 我们可以直接在vs中,新增单元测试项目. 类库中,只要声明TestClass,就当做是单元测试. 单元测试分为三部分:准备,行为,断言.其中准备和行为,就是模拟程序代码执行.断言,就是判断程序执行结果与预期结果是否一致. 断言使用:Assert类来实现.详细参见:Assert类 [TestCla…
测试方法                             Console.WriteLine(mock.Object.GetCountThing()); 匹配参数   mock.Setup(x => x.DoSomething(It.IsRegex("[a-d]+", RegexOptions.IgnoreCase))).Returns("foo"); 属性   mock.VerifySet(foo => foo.Name = "foo…
刚用上Moq,就用它解决了一个IUnitOfWork的mock问题,在这篇博文中记录一下. 开发场景 Application服务层BlogCategoryService的实现代码如下: public class BlogCategoryService : IBlogCategoryService { private IBlogCategoryRepository _blogCategoryRepository; public BlogCategoryServiceImp(IBlogCategor…
 作者:[美]Adam Freeman      来源:<精通ASP.NET MVC 4> 3.Visual Studio 的单元测试 有很多.NET单元测试包,其中很多是开源和免费的.本文打算使用 Visual Studio 附带的内建单元测试支持,但其他一些.NET单元测试包也是可用的. 为了演示Visual Studio的单元测试支持,本例打算对示例项目添加一个 IDiscountHelper 接口的新实现. 在 Models 文件夹下新建类文件 MinimumDiscountHelpe…
在之前的例子中,我们创建了FakeRepository类来支持我们的测试.但是我们还没有解释如何穿件一个真实的repository实现,我们需要一个替代品.一旦我们有一个真的实现,我们可能不会再用它,因为它把我们的测试环境变得复杂. FakeRepository类,是IProductRepository接口的伪实现.我们创建伪实现,并手动添加特别的参数,使得FakeRepository类手动的仿制品.Moq是一个框架,让我们仿制变得快速,简单,容易. 1 将Moq添加到测试项目,而不是应用程序项…
参考资料: 1. http://www.codeproject.com/Tips/729646/TDD-using-MOQ 2. https://github.com/Moq/moq4/wiki/Quickstart 从https://github.com/Moq/moq4下载编译,且编译需要依赖Castle.Core这个包…
一.测试方法的业务逻辑时,通常都需要从数据库读取测试数据,但是每次初始化数据库数据都很麻烦,也会影响到其它业务对数据的访问,怎样抽象数据访问层呢?就是用Moq去模拟数据访问的逻辑     二.步骤如下 2.1 定义数据访问接口和实现 public interface IDBAccess { List<string> GetList(string request); } public class DBAccessImp : IDBAccess { public List<string>…
清楚问题所在: 先开个头,当我们对A进行单元测试时,可能会发现A的实现必须要依赖B.这时,我们在写单元测试时,就必须先创建B的实例,然后把B传给A再建立A的实例进行测试. 这样就会出现一些问题: 1.我们的单元测试会变得复杂而且脆弱.复杂是因为我们必须要花费精力去弄清楚B的逻辑.脆弱是因为如果B的逻辑更改了,我们对A的单元测试也可能会面临失败. 2.更严重的是,当我们测试失败时,我们无法很快定位到究竟是A除了问题还是B出了问题. 所以我们使用Moq这种技术来Mock “伪造” 一个B的实例,这样…
[TestFixture] public class InstantBatchBuyTest { private string _mallAbc; private string _itemCode; private int _quantity; private string _items; Mock<ICatalogService> mockCatalog; Mock<IShoppingCartService> mockShoppingCartService; [SetUp] pu…