代码之家  ›  专栏  ›  技术社区  ›  g_b

在Moq中设置时,当返回值无效时,如何运行函数

  •  3
  • g_b  · 技术社区  · 8 年前

    mockStudentRepository.Setup(m => m.Create(It.IsAny<IStudent>())).Returns<IStudent>(s =>
    {
        students.Add(s);
        return 1;
    });
    

    mockStudentRepository.Setup(m => m.Update(It.IsAny<IStudent>()));
    

    我想放置一个lambda,它将在调用更新时运行,就像上面的第一个代码一样。我该怎么做?

    1 回复  |  直到 8 年前
        1
  •  5
  •   Nkosi    8 年前

    我相信你正在寻找 Callback 扩大

    mockStudentRepository
        .Setup(m => m.Update(It.IsAny<IStudent>()))
        .Callback<IStudent>(s => {
            var student = students.Where(x => x.Id == s.Id).FirstOrDefault();
            if(student != null) {
                    //...
            }
        });