单元测试之moq
来源:互联网 发布:c 语言declaration 编辑:程序博客网 时间:2024/04/28 15:13
moq模拟属性
源代码public class Customer{ public virtual int a { get; set; } public virtual string b { get; set; }}
测试代码
var customer = new Mock<Customer>(); customer.SetupProperty(p => p.a, 5); customer.Setup(p=>p.a).Returns(3); Assert.AreEqual(4, customer.Object.a);
注意
customer.SetupProperty(p=>p.a,5);等同于customer.Setup(p=>p.a).Returns(5);
moq模拟方法
源代码public interface Customer { void a(); string b(); string c(ref string cs); string d(string ds, out string dso); }
测试代码
var cs = "i am c"; var dso = ""; var customer = new Mock<Customer>(); customer.Setup(p=>p.a()); customer.Setup(p=>p.b()).Returns("i am b"); customer.Setup(p=>p.c(ref cs)).Returns((string s)=>s); customer.Setup(p=>p.d("i am d",out dso)).Returns("i am d 2"); customer.Object.a(); Assert.AreEqual("i am b", customer.Object.b()); Assert.AreEqual("i am c", customer.Object.c(ref cs)); Assert.AreEqual("i am d 2", customer.Object.d("i am d", out dso)); Assert.AreEqual("", dso);
moq模拟异常
源代码public interface Customer { void ShowException(int a); }测试代码
var customer = new Moq.Mock<Customer>(); customer.Setup(p => p.ShowException(0)).Throws(new Exception("i a exception")); customer.Object.ShowException(0);
moq模拟调用时赋值
源代码
public interface Customer { void A(); }测试代码
var customer = new Moq.Mock<Customer>(); int a = 0; customer.Setup(p=>p.A()).Callback(()=>a++); customer.Object.A(); Assert.AreEqual(1,a);
moq模拟参数过滤
源代码
public interface Customer { int A(int a); }测试代码
var customer = new Mock<Customer>(); customer.Setup(p=>p.A(It.Is<int>(i=>i%2==0))).Returns(2); Assert.AreEqual(2,customer.Object.A(5));
测试代码customer.Setup(p=>p.A(It.Is<int>(i=>i%2==0))).Returns(2);表示当参数是偶数时,返回2
It用于参数约束,常用的约束有
moq模拟回调函数
- It.IsInRange<T>:表示参数是否在某个范围
- It.IsRegex<T>:用正则表达式限制参数
- 等等....
见moq模拟调用时赋值
moq检测功能源代码
public interface Customer { int A(int a); }测试代码
var customer = new Mock<Customer>(); customer.Setup(p=>p.A(It.Is<int>(i=>i%2==0))).Returns(2).Verifiable(); customer.Object.A(4); customer.Verify();通过Verifiable()将A()函数标记,只有A()函数被调用,customer.Verify()才可以通过!
- 单元测试之moq
- Moq 单元测试的意义
- 单元测试—Moq框架
- moq单元测试方法大全
- 使用Moq实现单元测试
- 如何使用MOQ进行单元测试
- 如何使用MOQ进行单元测试
- 使用Moq让单元测试变得更简单
- 【ASP.Net MVC3 】使用Moq让单元测试变得更简单
- 【ASP.Net MVC3 】使用Moq让单元测试变得更简单
- 【ASP.Net MVC3 】使用Moq让单元测试变得更简单
- 使用Moq修改默认的ASP.NET MVC项目单元测试
- 使用Moq修改默认的ASP.NET MVC项目单元测试
- asp.net mvc3 对HttPost来的表单使用moq进行单元测试
- 单元测试——Moq框架下的Mock简介及简单实例
- Moq测试
- Moq Quickstart
- Moq基础教程
- B树、B-树、B+树、B*树都是什么
- 大数相乘
- Android ArrayAdapter 详解
- java字符编码[转]
- jboss缓存清理
- 单元测试之moq
- android ListView几个比较特别的属性
- C++中避免内存泄漏的几个绝招(二)
- 文件
- Android中的ellipsize
- 境界
- 对String类型的小数进行取位数
- 快速判断文件是文本文件或二进制文件 .
- 一款自制的视频录制软件