【问题标题】:Why is MSpec's ShouldBeOfType<T> assertion extension method missing?为什么缺少 MSpec 的 ShouldBeOfType<T> 断言扩展方法?
【发布时间】:2014-02-20 18:24:33
【问题描述】:

我正在尝试使用 Mspec 的 ShouldBeOfType&lt;T&gt;() 断言扩展方法,但智能感知说它找不到它。我正在使用 MSpec v0.7.0。我尝试使用 Nuget 重新安装,但没有成功。

[Subject("Prop Manager")]
public class When_Replying_To_Prop_Which_Already_Had_Emailed_And_No_Overwrite
{
    Because of = () => _exception = Catch.Exception(() => _PropManager.ReplyToProp());

    It should_result_in_an_error = () => _exception.ShouldBeOfType<InvalidOperationException>();

    private static Exception _exception;
}

【问题讨论】:

    标签: mspec


    【解决方案1】:

    从 0.7.0 版开始,Machine.Specifications 不再包含断言(请参阅Daniel Marbach's blog)。您必须安装 Machine.Specifications.Should(或其他断言库)。

    此外,ShouldBeOfType() 已替换为 ShouldBeOfExactType()(或分别为 ShouldBeAssignableTo()),因此您还应该在代码中进行更改(请参阅 github issue

    【讨论】:

    • 感谢您的回复:)
    • 这个突破性的变化吸引了很多人
    • 知道为什么断言现在存在于单独的库中吗?它是否允许灵活使用哪些断言库?
    • @Ciaran,我相信有两个原因:选择断言库的灵活性和关注点分离 - 当 MSpec 更改版本时,断言可以保持稳定,反之亦然。
    猜你喜欢
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多