如何跳过正在单元测试的方法内部的方法调用

Ste*_*ver 2 c# unit-testing

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

环境:IDE 中的 C# Visual Studio 2010 单元测试

jam*_*nor 5

如果您正在对具有外部依赖项的类进行单元测试,那么您必须使用注入的接口隔离外部依赖项。

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();
    }
}
Run Code Online (Sandbox Code Playgroud)