Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# FluentAssertions断言范围上下文子路径_C#_.net_Fluent Assertions - Fatal编程技术网

C# FluentAssertions断言范围上下文子路径

C# FluentAssertions断言范围上下文子路径,c#,.net,fluent-assertions,C#,.net,Fluent Assertions,是否有任何方法可以指定内置断言的{context}键的附加内容,或潜在地获取该上下文的值 样品 例如,我使用自定义执行的assertionscope键成功地附加到自定义断言中。断言如下所示: 示例类 扩展类 试验方法 输出 问题: 我怎样才能附加到内置的{context},这样就不必为已经提供的每个断言流重新发明轮子 例如,调用标准的布尔断言.Should().BeTrue(): 但这会丢失.Bar.IsFull的子路径,并输出: Output: Expected foo to be true

是否有任何方法可以指定内置断言的
{context}
键的附加内容,或潜在地获取该上下文的值

样品 例如,我使用自定义
执行的
assertionscope
键成功地附加到自定义断言中。断言如下所示:

示例类 扩展类 试验方法 输出 问题: 我怎样才能附加到内置的
{context}
,这样就不必为已经提供的每个断言流重新发明轮子

例如,调用标准的
布尔断言.Should().BeTrue()

但这会丢失
.Bar.IsFull
的子路径,并输出:

 Output: Expected foo to be true, but found False.
尝试 试一试 试图将内部断言范围的“上下文”设置为某个值,但它丢失了以前的值

        [CustomAssertion]
        public void HaveFullBar(string because = null, params object[] becauseArgs)
        {
            using (new AssertionScope(".Bar"))
            {
                Subject.Bar.Should().BeFull(because, becauseArgs);
            }
        }

        [CustomAssertion]
        public void BeFull(string because = null, params object[] becauseArgs)
        {
            using (new AssertionScope(".IsFull"))
            {
                Subject.IsFull.Should().BeTrue();
            }
        }
这只返回
.IsFull
,这是最内部的断言范围:

Expected .IsFull to be true, but found False.
第二次尝试 试图将“{context}”添加到
AssertionScope

        [CustomAssertion]
        public void HaveFullBar(string because = null, params object[] becauseArgs)
        {
            using (new AssertionScope("{context}.Bar"))
            {
                Subject.Bar.Should().BeFull(because, becauseArgs);
            }
        }
        [CustomAssertion]
        public void BeFull(string because = null, params object[] becauseArgs)
        {
            using (new AssertionScope("{context}.IsFull"))
            {
                Subject.IsFull.Should().BeTrue();
            }
        }
这只输出最内部的
{context}.IsFull

 Expected {context}.IsFull to be true, but found False.
第三次尝试 仍然会丢失原始上下文,因为第一个断言scope.Current.context是
null

输出:

Expected .Bar.IsFull to be true, but found False.

你有没有在Git回购中的某个地方进行过我可以查看的尝试?@DennisDoomen现在没有,我可能会在FA回购中提出一个问题,如果可以的话,在fork存储库中进行这些测试?
        [CustomAssertion]
        public void HaveFullBar(string because = null, params object[] becauseArgs)
        {
            using (new AssertionScope(".Bar"))
            {
                Subject.Bar.Should().BeFull(because, becauseArgs);
            }
        }

        [CustomAssertion]
        public void BeFull(string because = null, params object[] becauseArgs)
        {
            using (new AssertionScope(".IsFull"))
            {
                Subject.IsFull.Should().BeTrue();
            }
        }
Expected .IsFull to be true, but found False.
        [CustomAssertion]
        public void HaveFullBar(string because = null, params object[] becauseArgs)
        {
            using (new AssertionScope("{context}.Bar"))
            {
                Subject.Bar.Should().BeFull(because, becauseArgs);
            }
        }
        [CustomAssertion]
        public void BeFull(string because = null, params object[] becauseArgs)
        {
            using (new AssertionScope("{context}.IsFull"))
            {
                Subject.IsFull.Should().BeTrue();
            }
        }
 Expected {context}.IsFull to be true, but found False.
        [CustomAssertion]
        public void HaveFullBar(string because = null, params object[] becauseArgs)
        {
            using (new AssertionScope(AssertionScope.Current.Context + ".Bar"))
            {
                Subject.Bar.Should().BeFull(because, becauseArgs);
            }
        }

        [CustomAssertion]
        public void BeFull(string because = null, params object[] becauseArgs)
        {
            using (var scope = new AssertionScope(AssertionScope.Current.Context + ".IsFull"))
            {
                Subject.IsFull.Should().BeTrue();
            }
        }
Expected .Bar.IsFull to be true, but found False.