Moq练习
2024-08-27 06:03:05
本文参考
http://www.cnblogs.com/haogj/archive/2011/06/24/2088788.html
Moq适合于TDD的项目,小项目初期应该不太适合使用,有些浪费时间了!
NuGet 分别添加 NUnit 和 Moq
install-package nunit -project 测试项目名称
install-package moq -project 测试项目名称
public class Person
{
public string Id;
public string FirstName;
public string LastName;
public Person(string newId, string fn, string ln)
{
Id = newId;
FirstName = fn;
LastName = ln;
}
} public interface IPersonRepository
{
List<Person> GetPeople();
Person GetPersonById(string id);
} public class PersonService
{
private IPersonRepository personRepos;
public PersonService(IPersonRepository repos)
{
personRepos = repos;
}
public List<Person> GetAllPeople()
{
return personRepos.GetPeople();
}
public List<Person> GetAllPeopleSorted()
{
List<Person> people = personRepos.GetPeople();
people.Sort(delegate(Person lhp, Person rhp)
{
return lhp.LastName.CompareTo(rhp.LastName);
});
return people;
}
public Person GetPerson(string id)
{
try
{
return personRepos.GetPersonById(id);
}
catch (ArgumentException)
{
return null; // no person with that id was found
}
}
}
Moq
[TestFixture]
public class NUnitTest
{ private Mock<IPersonRepository> mo = new Mock<IPersonRepository>(); private Person onePerson = new Person("", "Wendy", "Whiner");
private Person secondPerson = new Person("", "Aaron", "Adams");
private List<Person> peopleList; /// <summary>
/// 填充基础数据
/// </summary>
[SetUp]//每个测试方法被调用之前执行
[Category("Mock")]
public void Init()
{
peopleList = new List<Person>();
peopleList.Add(onePerson);
peopleList.Add(secondPerson); } [Test]
[Category("Mock")]
public void TestGetAllPeople()
{
//模拟使用接口方法及返还数据
mo.Setup(m => m.GetPeople()).Returns(peopleList); PersonService service = new PersonService(mo.Object); Assert.AreEqual(, service.GetAllPeople().Count);
} [Test]
[Category("Mock")]
public void TestGetAllPeopleSorted()
{
mo.Setup(m => m.GetPeople()).Returns(peopleList); PersonService service = new PersonService(mo.Object); var p = service.GetAllPeopleSorted()[]; Assert.AreEqual("Adams", p.LastName);
} [Test]
[Category("Mock")]
public void TestGetSinglePersonWithValidId()
{
mo.Setup(m => m.GetPersonById(It.Is<string>(s => s == "")))
.Returns(onePerson); PersonService service = new PersonService(mo.Object); var p = service.GetPerson(""); Assert.IsNotNull(p);
Assert.AreEqual(p.Id, "");
} [Test]
[Category("Mock")]
public void TestGetSinglePersonWithInalidId()
{
mo.Setup(m => m.GetPersonById(It.IsAny<string>())); PersonService service = new PersonService(mo.Object);
Assert.IsNull(service.GetPerson(null));
} }
最新文章
- MySQL生成模型
- 在Gradle中使用jaxb的xjc插件
- python 基本数据类型分析
- IE兼容性
- iframe自适应高度js
- js中的DOM操作(1)
- C++程序结构---1
- DG_Oracle DataGuard作用和概念(概念)
- Keil RTX systick 初始化
- 51nod1476 括号序列的最小代价
- QQ互联OAuth2.0 .NET SDK 发布以及网站QQ登陆示例代码
- hibernate级联保存,更新个人遇到的问题
- Selenium2Library关键字
- IIS日志字段详解
- htmlparser 学习
- Docker安装Tomcat镜像并部署web项目
- orcal10g下载地址
- MongoDB可视化工具--Robo 3T 使用教程
- UVa - 12050
- 远程客户端连接MysqL数据库太慢解决方案