簡體   English   中英

流利斷言 - 在ShouldBeEquivalentTo()中覆蓋比較

[英]Fluent Assertions - Overriding comparison in ShouldBeEquivalentTo()

我有以下DTO:

public class Dto
{
    public DateTime Date { get; set; }
}

我試圖根據FA維基使用這種語法覆蓋屬性的比較:

public void Override_test()
{
    // Arrange
    var actual = new Dto { Date = DateTime.Now };
    var expected = new Dto { Date = DateTime.Now };

    // Act

    // Assert
    actual.ShouldBeEquivalentTo(expected, options => 
        options.Using<DateTime>(x => x.Subject.Should().BeCloseTo(DateTime.Now)));
}

但是測試沒有編譯。 我收到此錯誤:

Cannot implicitly convert type 'FluentAssertions.Equivalency.EquivalencyAssertionOptions<FluentAssertions.ShouldBeEquivalentTo.Override.Dto>.Restriction<System.DateTime>' to 'FluentAssertions.Equivalency.EquivalencyAssertionOptions<FluentAssertions.ShouldBeEquivalentTo.Override.Dto>'

任何人都可以建議正確的語法嗎?

你必須告訴FA時使用的是Using使用建築WhenTypeIs<DateTime>() 換一種說法:

actual.ShouldBeEquivalentTo(expected, options => 
    options.Using<DateTime>(x => x.Subject.Should().BeCloseTo(DateTime.Now)).WhenTypeIs<DateTime>());

但是,我建議不要依賴DateTime.Now太多了。 相反,考慮像Ayende Rahien中提出了使用的東西這個文章。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM