为了账号安全,请及时绑定邮箱和手机立即绑定

MsTest :每次测试方法运行时实际值都会增加

MsTest :每次测试方法运行时实际值都会增加

C#
慕盖茨4494581 2021-11-28 19:40:40
这是我的测试课[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 接口使用的所有方法也应该被模拟/设置。


查看完整回答
反对 回复 2021-11-28
  • 1 回答
  • 0 关注
  • 178 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信