c# - 设置最小起订量更新测试

标签 c# asp.net-mvc moq

我正在为各种实体开发起订量测试。我可以很好地设置创建和删除测试,但不能更新 - 存储库中的实体不会更改。我知道这是由于 PersistAll 没有执行任何操作(可能是由于我缺少设置)。

这是插入持久设置的示例(我正在寻找更新版本):

agg.Setup(a => a.InsertOnPersist<Thingy>(model)).Callback(() => mockThingies.Add(model));

此外,我还可以将列表链接到存储库:

agg.Setup(a => a.GetObjectStore<Artist>()).Returns(mockThingies.AsQueryable());

这是我的更新测试示例:

 public List<Thingy> mockThingies; //this is our repository
 [TestInitialize]
 public void SetupTests()
 {
    mockThingies= new List<Thingy>();
    Thingy someThingy = new Thingy();
    someThingy.Name = "MyName";
    someThingy.ID = 1;
    mockThingies.Add(someThingy);
  }

    [TestMethod]
    public void CanEditExistingThingy()
    {
        Mock<BusinessExceptionBroadcaster> beb = new Mock<BusinessExceptionBroadcaster>();
        Mock<IValidationEngine> valid = new Mock<IValidationEngine>();
        Mock<IAggregate> agg = new Mock<IAggregate>();
        agg.Setup(a => a.GetObjectStore<Thingy>()).Returns(mockThingies.AsQueryable());
        ThingyRepository repo = new ThingyRepository (agg.Object);
        ThingyService service = new ThingyService (repo, beb.Object, valid.Object);
        Thingy newThingy = new Thingy();
        newThingy.ID = 1; //same as old
        newThingy.Name = "newname"; //new name
        Assert.AreNotEqual(newThingy.Name,mockThingies[0].Name); 
        Assert.IsTrue(service.Update(newThingy));
        Assert.AreEqual(newThingy.Name, mockThingies[0].Name); //FAILS HERE
    }

这是要更新的代码:

    public bool Update(Thingy entity)
    {  
            Thingy existingThingy= _Thingy.FirstOrDefault(t=>t.ID == entity.ID);
            if (existingThingy != null)
            {
                _Thingy.PersistAll();
                return true;
            }
            else
            {
               //unimportant
            }
        }
        return false;
    }

最佳答案

不必担心测试更新调用是否确实更新了某些内容。您只需验证您的服务是否调用存储库上的适当方法来执行更新并保留。测试实际更新有点超出了本次测试的范围。

关于c# - 设置最小起订量更新测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11745744/

相关文章:

c# - 不在 using block 内等待是否安全?

c# - 模拟数据访问器

c# - 最小起订量在第二次验证时未执行任何调用

c# - 如何在不继承的情况下向自定义错误页面提供错误消息?

c# - 我如何使用 Moq 来模拟一个接口(interface),该接口(interface)具有将具体类作为参数的方法?

c# - Windows Mobile 6 GPS 精度

c# - 这两个 linq 实现有什么区别?

c# - 如何使用 iText 7 重新排序 pdf 文档

c# - 在 MVC 中初始化基本 Controller 时

asp.net-mvc - 在 mvc 中的应用程序的整个生命周期中保持变量