我想用私有方法模拟一个部分类。但是没有调用排列的方法。取而代之的是普通的。我没有收到任何错误。GetAppleModel 最初所做的与它无关,因为它不应该在我的测试用例中做任何事情。我希望 GetAppleModel 的完整主体什么都不做,只返回任务
测试代码:
Task<AppleModel> task = new Task<AppleModel>(() => appleModel);
var taskWorker = TaskWorkerFactory.Create(taskModel);
Mock.NonPublic
.Arrange<Task<AppleModel>>((AppleTaskWorker) taskWorker, "GetAppleModel", ArgExpr.IsAny<Guid>())
.DoInstead(() =>
{
//...
})
.Returns(task);
taskWorker.Start();
//Some Assertion
AppleTaskWorker 类:
public async void Start() {
_appleModel = await GetAppleModel(_guid);
}
private async Task<AppleModel> GetAppleModel(Guid serviceGuid)
{
var command = new ServiceCommand(serviceGuid);
await HandlerService.Start(command);
return command.GetResult();
}
我从 JustMock 开发人员那里找到了一个示例:
例子:
public class Class1
{
private bool Helper()
{
return true;
}
public bool TestMe()
{
if (Helper()) return true;
return false;
}
}
[TestMethod]
public void TestMethod1()
{
var class1 = new Class1();
Mock.NonPublic.Arrange<bool>(class1, "Helper").Returns(false);
bool actual = class1.TestMe();
Assert.IsFalse(actual);
}
但是还是不能正常工作...