0
最近我回答了SO question描述如何避免內部對象狀態驗證FluentAssertions。現在我面臨同樣的問題,並想知道爲什麼確實FluentAssertions驗證內部屬性OOTB?爲什麼FluentAssertions應該等效驗證內部?
public class Class1
{
[Fact]
public void CompareCultureInternalFields()
{
var foo1 = new Foo();
var foo2 = new Foo();
foo1.ShouldBeEquivalentTo(foo2); // fails
}
public object Culture { get; set; }
}
public class Foo
{
public Foo()
{
InternalProp = Guid.NewGuid();
}
internal Guid InternalProp { get; }
}
異常詳細信息:
Xunit.Sdk.XunitException: Expected member InternalProp to be {61625b04-c4e6-4e08-a45a-5ff8bb7d53e7}, but found {df589d73-e382-4104-8157-a41da2ca17f5}.
With configuration:
- Use declared types and members
- Compare enums by value
- Match member by name (or throw)
- Be strict about the order of items in byte arrays
不應該foo1
和foo2
對象是相當於爲消費者誰與公共API交易?
在您的示例中,如果該類位於另一個程序集/項目中,則不應該能夠訪問內部屬性。這不是一個很好的例子,如果類在相同的程序集 – Nkosi
好點。如果我用一些自動生成的內部字段重寫樣本會怎麼樣? –
好了,我明白你的意思了。 – Nkosi