我怎么能在Moq做到这一点?
Foo bar = new Foo();
Fake(bar.PrivateGetter).Return('whatever value')
Run Code Online (Sandbox Code Playgroud)
我似乎只能找到如何模拟通过框架创建的对象.我想在我创建的具体对象上只模拟一个方法/属性.
在TypeMock中,我会这样做Isolate.WhenCalled(bar.PrivateGetter).Returns('whatever value').
有任何想法吗?
是否可以使用Moq来模拟实现接口和抽象类的对象?
即:
public class MyClass: SomeAbstractClass, IMyClass
Run Code Online (Sandbox Code Playgroud)
你能嘲笑这个吗?
在我班级的方法中嘲笑局部变量时遇到了一些麻烦.
我尝试模拟我的Worker类,但它调用一个返回null值的方法,我的上下文变量变为null.因此,当我尝试获取Name属性时,我得到一个异常.
如何强制CreateWorkerContext()返回模拟值?可能有办法模拟局部变量(context)?
谢谢!
我的代码将详细说明问题:
namespace Moq
{
class Program
{
static void Main(string[] args)
{
var workerMock = new Mock<Worker>();
workerMock.Object.GetContextName();
}
}
public class Worker
{
public string GetContextName()
{
// something happens and context does not create (imitated situation)
WorkerContext context = CreateWorkerContext();
// exception because _context is null
return context.Name;
}
private WorkerContext CreateWorkerContext()
{
// imitate that context is not created
return null;
}
}
public class WorkerContext
{
public string …Run Code Online (Sandbox Code Playgroud)