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

时间:2015-02-17 13:06:53

标签: c# mocking moq

假设这个类:

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()上的回调似乎没有访问类状态 - 我可以设置Bar getter,但这太普遍了,因为其他操作也读取Bar以及

1 个答案:

答案 0 :(得分:1)

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

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