[NSub說明書] Page 3 - 屬性 與 多個回傳值

NSubstitute - 介紹 屬性 與 多個回傳值
範例程式碼放在 GitHub

前言

屬性其實就是只需要指定回傳值,回傳值得部份可以有多個回傳值,一起介紹

屬性回傳值的設定

屬性回傳值用Returns
直接看程式碼

        public interface ICalculator
        {
            string Mode { get; set; }
        }

        [TestMethod]
        public void A02_1()
        {
            //arrange
            //NSubstitute會產生一個ICalculator 假的實體出來
            ICalculator calculator = Substitute.For<ICalculator>();
            //設定假的實體當Mode時 回傳
            calculator.Mode.Returns("A");

            var expected = "A";

            //act
            var actual = calculator.Mode;

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

        [TestMethod]
        public void A02_2()
        {
            //arrange
            //NSubstitute會產生一個ICalculator 假的實體出來
            ICalculator calculator = Substitute.For<ICalculator>();
            //設定假的實體當Mode時 依序回傳A,S,D
            calculator.Mode.Returns("A", "S", "D");

            var expected1 = "A";
            var expected2 = "S";
            var expected3 = "D";

            //act
            var actual1 = calculator.Mode;
            var actual2 = calculator.Mode;
            var actual3 = calculator.Mode;

            //assert
            Assert.AreEqual(expected1, actual1);
            Assert.AreEqual(expected2, actual2);
            Assert.AreEqual(expected3, actual3);
        }


calculator.Mode.Returns("A");
Mode回傳A
calculator.Mode.Returns("A", "S", "D");
第一次呼叫回傳A 第二次回傳S 第三次回傳D ,超過三次都是回傳D
這樣的模式 一樣可以用在方法的回傳值喔

請特別注意 如果是分開設定的話是會後蓋前

calculator.Mode.Returns("A");
calculator.Mode.Returns("S");
calculator.Mode.Returns("D");

這樣只會回傳D 

方法跟屬性都可以塞假的回傳值,多多利用吧

結語

接下來會介紹方法被呼叫幾次 如何驗證

 

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