【问题标题】:Moq.MockVerificationException not public xUnit Assert.ThrowsMoq.MockVerificationException 不公开 xUnit Assert.Throws
【发布时间】:2015-05-19 14:42:27
【问题描述】:

我正在测试一个方法,如果某些参数是某些值而不是其他值,它将调用另一个方法。

我使用 Moq 的 Verify 来测试这个。但是,当我使用 xUnit 查看在发送带有数据的参数时是否未调用该方法时,不应使该方法调用第二种方法。

问题是我做不到

mockObject.Verify();
Assert.Throws<Moq.MockVerificationException>(()=>mockObject.Method());

我从 MSTest 更改为 xUnit,因为内置了对 throws 的支持,并且之前我必须使用 ExpectedException 属性来装饰我的测试方法。

我尝试将 Moq 非公共异常强制转换为公共父级 Moq.MoqException,但这会引发错误。

所以我想我可能不得不这样做:

try {moqObj.Verify();}
catch(Moq.Exception mve)
{
    Assert.SomethingIsException();
}

【问题讨论】:

    标签: moq xunit.net


    【解决方案1】:

    据我了解,您只是想验证是否调用了某些方法?如果是这样,试试这个:

    var theThing = new Mock<IThing> ();
    
    theThing.Verify (x => x.DoSomething ("a"), Times.Never);
    theThing.Verify (x => x.DoSomething ("b"), Times.Once);
    

    如果你需要在第一个方法被调用后调用另一个方法,你可以使用回调:

    theThing.Setup (x => x.DoSomething ("a")).Callback (() => {});
    

    【讨论】:

      猜你喜欢
      • 2013-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 2017-08-16
      • 2014-01-02
      • 2016-02-27
      相关资源
      最近更新 更多