【问题标题】:FluentAssertions: string does not contain a definition for ShouldBeEquivalentToFluentAssertions:字符串不包含 ShouldBeEquivalentTo 的定义
【发布时间】:2018-08-14 03:59:47
【问题描述】:

我正在尝试使用 Nspec。我已按照以下说明操作:http://nspec.org/

  1. 创建类库项目
  2. Nuget:安装包 nspec
  3. Nuget:安装包 FluentAssertions
  4. 创建一个类文件并粘贴以下代码:

using NSpec;
using FluentAssertions;

class my_first_spec : nspec
{
    string name;

    void before_each()
    {
        name = "NSpec";
    }

    void it_asserts_at_the_method_level()
    {
        name.ShouldBeEquivalentTo("NSpec");
    }

    void describe_nesting()
    {
        before = () => name += " Add Some Other Stuff";

        it["asserts in a method"] = () =>
        {
            name.ShouldBeEquivalentTo("NSpec Add Some Other Stuff");
        };

        context["more nesting"] = () =>
        {
            before = () => name += ", And Even More";

            it["also asserts in a lambda"] = () =>
            {
                name.ShouldBeEquivalentTo("NSpec Add Some Other Stuff, And Even More");
            };
        };
    }
}

编辑器识别命名空间和 nspec 类,但是我看到一个编译器错误:

'字符串不包含 ShouldBeEquivalentTo' 的定义。

有什么问题?

我正在使用 .NET 4.7.1 和 Visual Studio 2017。

我花了一些时间在谷歌上搜索,例如:https://github.com/fluentassertions/fluentassertions/issues/234

【问题讨论】:

  • @CodeCaster,你能澄清一下你的意思吗?我只是按照说明进行操作。代码在我链接到的网页上。
  • 好吧,那个样本是错误的/过时的。它发生了。在最新版本的 FluentAssertions 中,写成 .Should().BeEquivalentTo()

标签: c# fluent-assertions nspec


【解决方案1】:

FluentAssertions 已删除 ShouldBeEquivalentTo 扩展,这是最近版本中的一项重大更改。

有关建议的替代方案,请参阅最近的 FluentAssertions 文档

https://fluentassertions.com/introduction

name.Should().BeEquivalentTo(...);

您的示例代码需要更新为

class my_first_spec : nspec {
    string name;

    void before_each() {
        name = "NSpec";
    }

    void it_asserts_at_the_method_level() {
        name.Should().BeEquivalentTo("NSpec");
    }

    void describe_nesting() {
        before = () => name += " Add Some Other Stuff";

        it["asserts in a method"] = () => {
            name.Should().BeEquivalentTo("NSpec Add Some Other Stuff");
        };

        context["more nesting"] = () => {
            before = () => name += ", And Even More";

            it["also asserts in a lambda"] = () => {
                name.Should().BeEquivalentTo("NSpec Add Some Other Stuff, And Even More");
            };
        };
    }
}

【讨论】:

  • 谢谢。这按预期工作。你会把你的 Nspec 测试放在一个单独的 Visual Studio 项目中到你的 Specflow 场景吗?
  • 你能回答我上面评论中的问题吗?然后我会标记你的答案。
  • @w0051977:堆栈溢出不是这样工作的!如果您还有其他问题,请发布一个新问题。这不是一个论坛、辅导或讨论网站。如果答案解决了您最初的问题,请接受。请再次输入强制性的tour 以重述站点规则。
  • 啊……这适用于字符串,但似乎不适用于 Int。似乎 Ints 是 .Should().Be(...)
  • @Nkosi - 我使用ShouldBeEquivalentTo 来比较自定义类型的列表,它很好地比较了对象的公共属性,想知道当ShouldBeEquivalentTo 不再可用时您是否可以建议如何执行此操作?跨度>
猜你喜欢
  • 2013-04-15
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 1970-01-01
  • 2019-10-06
  • 2017-06-15
  • 1970-01-01
相关资源
最近更新 更多