接口上有模拟方法的麻烦

时间:2019-06-14 17:52:11

标签: c# fakeiteasy

在接口方法上尝试使用CallTo().Returns()时,收到以下错误。

严重性代码描述项目文件行抑制状态 错误CS1929'IReturnValueArgumentValidationConfiguration'不包含'Returns'的定义,最佳扩展方法重载'ReturnValueConfigurationExtensions.Returns(IReturnValueConfiguration>,string)'需要类型为'IReturnValueConfiguration>''的接收者CareControls.Ivis.Tests G:\ Ivis \ CareControls.Ivis.Tests \ Framework \ AbIo \ TimerHandlerTests.cs 105有效

这是测试:我添加了注释,以显示每种类型是什么以及编译器错误发生的位置。

[Fact]
public void Reads_AbPlc_at_each_inputs_label()
{
    var abPlc = A.Fake<AbPlc>(); // interface
    var input1 = A.Fake<ToggleUi>(); // interface
    var input2 = A.Fake<ToggleUi>(); // interface
    var w2 = A.Fake<MethodWeb>(); // class
    var f = this.fixture;
    input1.Label = f.Create<string>();
    input2.Label = f.Create<string>();
    A.CallTo(() => this.ui.Inputs)
        .Returns(new LinkedListLot<ToggleUi>(
            new[]
            {
                input1,
                input2
            }));
    var a = f.Create<bool>();
    A.CallTo(() => input1.GetHashCode())
        .Returns(0xFF); // error
    A
        .CallTo(() => abPlc.Read(input1.Label))
        .Returns(false); // error

    A.CallTo(() => w2.RegisterDependency(null, null))
        .Returns(false); // compiles fine
    var w = this.web;
    w.RegisterDependency(new UiReaderWriter());
    w.RegisterDependency(abPlc);

    this.handler.Handle(
        this.ui);

    A
        .CallTo(() => abPlc.Read(input1.Label))
        .MustHaveHappened();
    A
        .CallTo(() => abPlc.Read(input2.Label))
        .MustHaveHappened();
}

最后一句话:这些接口方法不是扩展方法。

编辑1:我相信接口的属性工作正常。

编辑2:实际包含错误并更新了GetHashCode()调用,以实际反映GetHashCode()信号。

0 个答案:

没有答案