使用 moq 和 xunit 测试不带参数的函数

问题描述 投票:0回答:1

我正在尝试为函数编写单元测试:

public async Task<IEnumerable<Person>> GetPerson()
        {
            var query = "SELECT * FROM Person";
            using (var connection = _context.CreateConnection())
            {
                var person = await connection.QueryAsync<Person>(query);
                return person.ToList();
            }
        }

位于 PersonServices 类中,继承自 IPersonServices 接口。

测试:

[Fact]
        public void TestGetPersonReturnPerson()

        {
            var mocGetPerson = new Mock<IPersonServices>();
            mocGetPerson.Setup(m => m.GetPerson().Result).Returns(Task.FromResult<IEnumerable<Person>>) ;
            IPersonServices personServices = mocGetPerson.Object;

            Assert.NotNull(personServices);
        }

测试失败...

testing moq xunit
1个回答
0
投票

正确解决方案:

private static List<Person> GetFakePersonList()
 {
     return new List<Person>()
    {  
  new Person
     {
         Id = Guid.NewGuid(),
         dateTimeCreate = DateTime.Now,
         Email = "[email protected]",
         FirstName = "xxx",
         LastName = "xxx",
         Password = "123123"
     } 
     };
 }

 [Fact]
 public async Task TestGetPersonReturnPerson()
 {
     var mocGetPerson = new Mock<IPersonServices>();
     mocGetPerson.Setup(m => m.GetPerson().Result).Returns(PersonControllerTest.GetFakePersonList);
     var result = mocGetPerson.Object.GetPerson();

     Assert.NotNull(result);
 }
© www.soinside.com 2019 - 2024. All rights reserved.