繁体   English   中英

流利的断言应该始终等于使用不同的属性传递

[英]Fluent Assertions ShouldBeEquivalentTo always passes with different properties

我创建了一个简单的复合模式,其组件定义为

public abstract class Component : IEnumerable<Component>
    {
        protected EntityComponent(int id)
        {
            Id = id;
        }

        public int Id { get; protected set; }

        public abstract IEnumerator<EntityComponent> GetEnumerator();

        IEnumerator IEnumerable.GetEnumerator()
        {
            return GetEnumerator();
        }
    }

及其组合实现为

public class Composite : Component
    {
        private readonly IList<Component> childComponents = new List<Component>();

        public Composite(int id)
            : base(id)
        {
        }

        public int Count { get; set; }

        public void Add(Component child)
        {
            childComponents.Add(child);
            Count++;
        }

        public override IEnumerator<Component> GetEnumerator()
        {
            foreach (var childComponent in childComponents)
        {
            yield return childComponent;
            foreach (var component in childComponent)
            {
                yield return component;
            }
        }
        }
    }

现在,我使用Fluent断言设置一些测试,以断言两个复合结构是否等效,例如,

[Fact]
        public void TestAssertions()
        {
            var a1 = new Composite(1);
            var a2 = new Composite(2);

            a1.Add(a2);

            var b1 = new Composite(1);
            var b2 = new Composite(2);

            b1.Add(b2);

            a1.ShouldBeEquivalentTo(b1);
        }

该测试符合预期。 但是,如果我更改一种复合材料的特性之一,即

[Fact]
        public void TestAssertions()
        {
            var a1 = new Composite(1);
            var a2 = new Composite(2);

            a1.Add(a2);

            var b1 = new Composite(101);
            var b2 = new Composite(2);

            b1.Add(b2);

            a1.ShouldBeEquivalentTo(b1);
        }

该测试仍然通过,但不应该失败吗?

Composite没有公开FA可以遍历的任何属性,因此它只会查看Count

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM