首页 > 解决方案 > “调用失败”和“设置不匹配”同时出现

问题描述

我正在编写一些单元测试并模拟一些部分。我分别理解这些错误的含义。我的问题是它们同时发生并且针对相同的方法,但我可以模拟同一类的其他方法。这只是一种特殊的方法。

我已经检查过:

  1. 不同的命名空间和相同的类名存在混淆
  2. 有相同名称但不同签名的方法
  3. 模拟发生在方法调用之后。这就是测试的样子。我对同一类的其他方法使用相同的结构,没有问题:

    private readonly Mock<IDependency> mockDependency;
    
    [Fact]
    public void GetSomeThingByIdTest()
    {
        SetupMock();
        ITestedInterface testedClass = CreateTestedImpl();
        ISomeThing expected = new SomeThing();
        ISomeThing mocked = testedClass.GetSomeThingById("someId");
    
        Assert.Equal(expected, mocked);
    }
    
    private void SetupMock()
    {
        var mockSomeThing = new Mock<ISomeThing>();
        mockDependency.Setup(x => x.GetSomeThingById("someId")).Returns(mockSomeThing.Object);
    }
    
    private ITestedInterface CreateTestedImpl() => new Tested(mockDependency.Object);
    

我得到:

Moq.MockException ITestedInterface.GetSomeThingById(someId) 调用失败,模拟行为严格。

Moq.MockException 以下设置不匹配: ITestedInterfacex => x.GetSomeThingById(someId)

同时。任何想法为什么会发生这种情况?

标签: c#moqxunit

解决方案


推荐阅读