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
本身的行为时如何反应。
假设这个 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
本身的行为时如何反应。