[NSub說明書] Page 9 - async await

NSubstitute -  async await
範例程式碼放在 GitHub

前言

當紀錄一下 遇到async await 要如何回傳 假資料

程式碼

    public class A10_Async
    {
        public interface IService { Task<int> GetCount(); }

        public class MyDemo
        {
            private readonly IService _service;

            public MyDemo(IService service)
            {
                this._service = service;
            }
            public async Task<int> Do()
            {
                var result = await _service.GetCount();
                return result;

            }
        }

        [TestMethod]
        public void NSubstituteNote21()
        {
            //arrange
            var service = Substitute.For<IService>();
            service.GetCount()
                   .ReturnsForAnyArgs(Task.FromResult(66));
            var sut = new MyDemo(service);

            var expected = 66;
            //act
            var actual = sut.Do().Result;
            //assert
            Assert.AreEqual(expected, actual);
        }
    }

重點是ReturnsForAnyArgs塞資料的時候要用Task.FromResult

結語

Xunit.net可以直接測試方法上async , 但是MStest 不行

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