[NSub說明書] Page 11 - Func , Action

NSubstitute -  Func , Action
範例程式碼放在 GitHub

前言

當紀錄一下 遇到Func Action 要如驗證

程式碼

    public class A12_Func
    {
        public class MyDemo
        {
            public void DoC(Func<string, bool> func, Action<int> action)
            {
                if (func("test"))
                {
                    action(1);
                }
            }
        }
        [TestMethod]
        public void NSubstituteNote27()
        {
            //arrange
            var func = Substitute.For<Func<string, bool>>();
            func.Invoke(Arg.Any<string>()).Returns(true);
            var action = Substitute.For<Action<int>>();
            var sut = new MyDemo();
            //act
            sut.DoC(func, action);
            //assert
            action.ReceivedWithAnyArgs().Invoke(Arg.Any<int>());
        }
        [TestMethod]
        public void NSubstituteNote28()
        {
            //arrange
            var func = Substitute.For<Func<string, bool>>();
            func.Invoke(Arg.Any<string>()).Returns(false);
            var action = Substitute.For<Action<int>>();
            var sut = new MyDemo();
            //act
            sut.DoC(func, action);
            //assert
            action.DidNotReceiveWithAnyArgs().Invoke(Arg.Any<int>());
        }
    }

其實都差不多 只是func在執行的時候平時都習慣不打 Invoke , 就是把 Invoke 加上就好懂了

結語

func也可以寫測試喔

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