安裝 NSubstitute
安裝 Nuget 的 NSubstitute 套件
| 1
 | Install-Package NSubstitute
 | 
類別結構
 
建立模擬物件
建立 Repository 的模擬物件
| 12
 3
 4
 5
 6
 7
 8
 
 | Repository mockRepository = Substitute.For<Repository>();
 mockRepository
 .GetData(Arg.Any<string>())
 .Returns(new Table {
 Id = 1,
 Name = "張三"
 });
 
 | 
注入模擬物件
把 Repository 的模擬物件注入 Service
| 1
 | Service service = new Service(mockRepository);
 | 
使用 Service
| 12
 3
 
 | Table result = service.RunLogic();
 Assert.That(result.Name, Is.EqualTo("張三"));
 
 | 
驗證模擬物件
依傳入參數做回傳
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 
 | mockRepository.GetData("張三")
 .Returns(new Table {
 Id = 1,
 Name = "張三"
 });
 
 mockRepository
 .GetData("李四")
 .Returns(new Table {
 Id = 2,
 Name = "李四"
 });
 
 | 
模擬呼叫方法多次依序回傳不同內容
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 
 | mockRepository.GetData(Arg.Any<string>())
 .Returns(
 new Table
 {
 Id = 1,
 Name = "張三"
 },
 new Table
 {
 Id = 2,
 Name = "李四"
 });
 
 | 
驗證呼叫方法的次數與傳入參數
| 12
 3
 
 | mockRepository.Received(1)
 .GetData(Arg.Is<string>(x => x == "張三"));
 
 |