Moq - 模拟时如何访问 class 成员?

Moq - how to access a class member when mocking?

假设这个 class:

public class Foo
{
   public string Bar { get; set;}

   Foo()
   {
      this.Bar = "Hello world";
   }

   public void DoStuff()
   {
       this.Bar = "BAR" // imagine this is read from a memory stream
   }

}

我想模拟 Foo 并设置它,以便我可以在 DoStuff() 中引入我自己的行为 - 即对 Bar 成员执行一些操作。但是如何在 DoStuff() 的回调中访问 Bar?

我尝试了什么: - DoStuff() 上的回调似乎无法访问 class 状态 - 我可以设置 Bar getter,但这太笼统了,因为其他操作也读取 Bar

你不会因为你在做什么而嘲笑 Foo。模拟用于在特定实例中提供严格控制的依赖关系。

例如,如果 Foo 有一个在构造函数中传递的类型 IBaz 的成员,您可以在告诉 IBaz 的地方创建 IBaz 的模拟当 Foo 对其接口进行调用以触发 Foo 本身的行为时如何反应。