我正在使用 JustMock 来帮助编写单元测试,并得出了一些我认为相当简单但找不到答案的东西。我不能发布任何代码,但我会尽力解释。我想出了一个例子来展示我正在尝试做的事情。我想测试 Class1 的 Close 方法,而不调用 Class2 的 CloseConnection 方法。我尝试在 Class2 的 CloseConnection 实例上使用 Mock.Arrange,但我相信它特定于您在哪个实例上进行排列。在我设置单元测试和模拟(示例代码下面的模拟代码)然后在 Class1 的 Close 方法中进行调试后,它仍然从 Class2 调用 CloseConnection 方法,我认为是因为 Class2 依赖项是在 Class1 的构造函数中创建的,我没有访问权限直接给它。
public class Class1
{
private Class2 instanceOfClass2;
public Class1()
{
instanceOfClass2 = new Class2();
}
public void Close()
{
// other code here
instanceOfClass2.CloseConnection(true);
}
}
public class Class2
{
public void CloseConnection(bool persist)
{
// Method I don't want executed
}
}
任何人都知道我如何测试 Class1 的 Close 方法并使用 JustMock 忽略对 Class2 的 CloseConnection 方法的调用?
我努力了:
Mock.Arrange(() => instanceOfClass2.CloseConnection(persist)).DoNothing();
以及模拟和非模拟类 2 实例和不同的参数(即 Arg.IsAny()),但仍然无法阻止此方法调用的发生。
重构代码对我来说不是一个选项,所以我无法更改它以注入依赖项,我阅读了有关使用 justmock 模拟构造函数的信息,但它似乎忽略了构造函数,而不是让我为 Class1 编写不同的构造函数来使用这样我就可以访问 Class2。
有任何想法吗?
更新 1:Telerik 回到我身边说尝试使用 .IgnoreInstance() 仍然没有阻止对 CloseConnection 的调用。等待 Telerik 的另一个回复。