我有一个方法测试,我正在单元测试中。在该方法调用内部,它调用将要引发错误的方法,因为它试图与在单元测试运行时将不可用的设备通信。有没有办法避免内部方法调用被调用?
环境:IDE中的C#Visual Studio 2010单元测试
最佳答案
如果您要对具有外部依赖关系的类进行单元测试,则必须使用注入的接口隔离外部依赖关系。
interface IDevice
{
void Run();
}
interface IDeviceOperator
{
void Operate();
}
class DeviceOperator : IDeviceOperator
{
private readonly IDevice _device;
public DeviceOperator(IDevice device)
{
_device = device;
}
public void Operate()
{
_device.Run();
// test other stuff here
}
}
[TestFixture]
public class DeviceOperatorTests
{
[Test]
public void Test_DeviceOperator_Operate()
{
IDevice device = A.Fake<IDevice>(); // Using FakeItEasy 3rd party mocking framework syntax
DeviceOperator deviceOperator = new DeviceOperator(device);
deviceOperator.Operate();
}
}