3

私は次のDTOを持っています:

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

そして、 FA wikiに従って、この構文を使用してプロパティの比較をオーバーライドしようとしています:

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>'

誰でも正しい構文をアドバイスできますか?

4

1 に答える 1

7

Usingを使用して、いつその構造を使用するかを FA に伝える必要がありWhenTypeIs<DateTime>()ます。言い換えると:

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

ただし、あまり頼りDateTime.Nowすぎないことをお勧めします。代わりに、Ayende Rahien がこの記事で提案したようなものを使用することを検討してください。

于 2014-11-11T20:25:16.383 に答える