我有一个方法测试,我正在单元测试中。在该方法调用内部,它调用将要引发错误的方法,因为它试图与在单元测试运行时将不可用的设备通信。有没有办法避免内部方法调用被调用?

环境: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();
    }
}

10-08 07:14