xUnit将字典转换为IEnumerable

本文关键字:IEnumerable 转换 字典 xUnit | 更新日期: 2023-09-27 18:02:14

我一直在网上搜索一种方法,通过将我的IDictionary的值转换为模拟的Setup来制作IEnumerable(直接或从'= List转换为IEnumerable)。然而,我只遇到了后者。

灵感来源:

  1. IEnumerablea = new IEnumerable();我可以这样做吗?
  2. 将带列表的字典转换为IEnumerable
  3. 将任意类型的字典转换为IEnumerable集合
  4. 如何使用Moq返回数据或值的列表?

    public class UserServiceTests
    {
        private Mock<IUserRepository> _userRep { get; set; }
        // fake app repository to get data from
        private IDictionary<int, User> _userRepData { get; set; }
        private UserService _sut { get; set; }
        public UserServiceTests()
    {
        _userRepData = new Dictionary<int, User>();
        _userRep = new Mock<IUserRepository>();
        // Been able to create the proper list using:
        // List<User> usersList = _userRepData.Values.ToList<User>(); 
        // IEnumerable<User> users = appsList.AsEnumerable();
        // So I am looking for away to replicate this in my setup method
        // Obviously know the below is not the correct syntax.
        _userRep.Setup(r => r.GetUsers()).Returns(() => new IEnumerable<User> {_userRepData.Values.ToList<User>} );
        _sut = new UserService(_userRep.Object);
    }
    [Fact]
    public void GetUsers_succeeds_at_getting_all_users_from_repository()
    {
        User user1 = new User();
        User user2 = new User();
        _userRepData.Add(1, user1);
        _userRepData.Add(2, user2);
        IEnumerable<User> users = new User[] { user1, user2 };
        _sut.GetUsers().Should().BeSameAs(users); // Note: fluentassertions
    }
    

    }

xUnit将字典转换为IEnumerable

Values已经实现了IEnumerable<T>
你可以直接退货;你不需要创建任何东西

相关文章: