[NSub說明書] Page 1 - 簡介NSubstitute

NSubstitute 的用途和HelloNSubstitute第一個範例
範例程式碼放在 GitHub

前言

這是說明書系列是紀錄NSubstitute套件的使用筆記
會把常用的用法整理一下,也可以當作入門教學

NSubstitute介紹

寫單元測試時,會需要隔離外部服務
專注在當前程式碼的3A測試(Arrange, Act, Assert)
NSubstitute就是拿來做 Mock, stub, fake 之類的事情
也就是拿來產生 假的實體(instance)
可以自訂假的實體的方法,屬性 要回傳的內容

Nsubstitute官網

NuGet Gallery | NSubstitute

Hello NSubstitute

首先要先建立一個單元測試的專案
就直接看程式碼

    [TestClass]
    public class A00_HelloNSubstitute
    {
        public interface ICalculator
        {      
            int Add(int a, int b);
        }

        [TestMethod]
        public void HelloNSubstitute()
        {
            //arrange
            //NSubstitute會產生一個ICalculator 假的實體出來
            ICalculator calculator = Substitute.For<ICalculator>();
            //設定假的實體的Add方法當傳入3,6 回傳 9
            calculator.Add(3,6).Returns(9);
            var expected = 9;

            //act
            var actual = calculator.Add(3,6);

            //assert
            Assert.AreEqual(expected, actual);
        }
    }

程式碼有一個介面ICalculator
我可以用Substitute.For<ICalculator>();
產生一個 假的ICalculator實體
calculator.Add(3,6).Returns(9);
就是設定add方法 當傳入的參數是3,6時 回傳9
這就是隔離,我不管add方法寫對還是錯,我可以設定我期待的回傳值
最後實際去執行add然後驗證是否如預期是9

NSubstitute 就是隔離外部程式的神兵利器

結語

接下來會介紹NSub最常用的功能
設定 傳入參數 與 傳出值 的更多細節

推薦閱讀

91 - 單元測試簡介-Slide

91 - 如何隔離相依性 - 基本的可測試性

如果內容有誤請多鞭策謝謝