xUnit将字典转换为IEnumerable
本文关键字:IEnumerable 转换 字典 xUnit | 更新日期: 2023-09-27 18:02:14
我一直在网上搜索一种方法,通过将我的IDictionary
的值转换为模拟的Setup
来制作IEnumerable
(直接或从'= List
转换为IEnumerable
)。然而,我只遇到了后者。
灵感来源:
- IEnumerable
- 将带列表的字典转换为IEnumerable
- 将任意类型的字典转换为IEnumerable集合
-
如何使用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 }
}
Values
已经实现了IEnumerable<T>
。
你可以直接退货;你不需要创建任何东西