这是我的测试课[TestClass]public class FooServiceTest{ private IYourRepository _yourRepository; [TestInitialize] public void Initialize() { _yourRepository = new Mock<YourRepository>().Object; } [TestMethod] public void GetPushableEntries_gets_all_pushable_entries() { var yourObjectList = new List<YourObject> { new WaitingQueue { ProfileId = 26, IsDeleted = false, Pushable = true }, new WaitingQueue { ProfileId = 27, IsDeleted = false, Pushable = true }, new WaitingQueue { ProfileId = 28, IsDeleted = false, Pushable = false } }; foreach (var yourObject in yourObjectList) { _yourRepository.Create(yourObject); } var pushableEntries = _yourRepository.GetList(x => x.Pushable); pushableEntries.Count.ShouldEqual(2); pushableEntries.ShouldNotBeNull(); pushableEntries.ShouldBe<IReadOnlyCollection<WaitingQueue>>(); }}这是ShouldEqual方法public static T ShouldEqual<T>(this T actual, object expected){ Assert.AreEqual(expected, actual); return actual;}这是GetList方法public IReadOnlyCollection<T> GetList(Expression<Func<T, bool>> @where, params Expression<Func<T, object>>[] nav){ using (var dbContext = new MyDbContext()) { return GetFiltered(dbContext, nav).Where(where).ToList(); }}每次我运行GetPushableQueues_gets_all_pushable_entries()方法实际值增加2。Assert.AreEqual failed. Expected:<2>. Actual:<2>. //first runAssert.AreEqual failed. Expected:<2>. Actual:<4>. //second runAssert.AreEqual failed. Expected:<2>. Actual:<6>. //third run即使我清理测试项目并重建它,这个问题仍然存在。知道为什么会发生这种情况以及我错过了什么吗?注意:还有其他测试方法使用_yourRepository和调用Create方法来创建实体。
1 回答
HUWWW
TA贡献1874条经验 获得超12个赞
问题是您实际上在那里使用某种存储库。你不要嘲笑它。_yourRepository = new Mock<YourRepository>().Object;
应该是 _yourRepository = new Mock< IYourRepository >().Object;
并且您从 IYourRepository 接口使用的所有方法也应该被模拟/设置。
- 1 回答
- 0 关注
- 178 浏览
添加回答
举报
0/150
提交
取消