NREMENTによるシーケンス順序のアサート
私は最近のNREMENT COREへの小さな追加をしました.そして、私は、特定の種類のテストを誰にとっても少し簡単にすることを望みます.
簡単な例
そこに取ることができるいくつかの戦略があります.最初に、上記のアサーションの基礎となるロジックは
多くのタイプはalready supportedです
あなたの複雑なタイプに とどこでもそれを注文することができます、あなたは面白いビットから の上で断言することができます
( 3 )おそらくあなたの試みになるでしょう.
ハッピーテスト!
簡単な例
[Test]
public void ShouldAssertSimpleOrder()
{
// Arrange
var numbers = new[] { 4, 2, 5, 1 };
// Act
var ascending = numbers.OrderBy(x => x).ToArray();
var descending = numbers.OrderByDescending(x => x).ToArray();
// Assert
Expect(ascending)
.To.Be.Ordered.Ascending();
Expect(descending)
.To.Be.Ordered.Descending();
}
それで、あなたは考えているかもしれません:「これはすべて良いです、しかし、私が数より複雑なタイプのコレクションの注文を主張したいならば、どうですか?」そこに取ることができるいくつかの戦略があります.最初に、上記のアサーションの基礎となるロジックは
IComparable<T>
インターフェースに依存するComparer.Defaultを利用します.多くのタイプはalready supportedです
IComparable<T>
を実装することができて、LINQ .Select
を缶詰にして、その( 3 )おそらくあなたの試みになるでしょう.
[Test]
public void ShouldAssertOrderedAscending()
{
// Arrange
var doggos = new[]
{
new { id = 1, name = "Rex", adopted = new DateTime(2020, 1, 1) },
new { id = 2, name = "Spot", adopted = new DateTime(2019, 5, 6) },
new { id = 3, name = "Woofles", adopted = new DateTime(2020, 4, 5) }
};
Expect(doggos.Select(d => d.id))
.To.Be.Ordered.Ascending();
// Act
var orderedByAdoption = doggos.OrderBy(d => d.adopted);
// Assert
Expect(orderedByAdoption.Select(d => d.adopted))
.To.Be.Ordered.Ascending();
}
上記の、そして、IOrderedEnumerable<T>
のための一流のサポートは、nexpect 1.0.181で加えられます.ハッピーテスト!
Reference
この問題について(NREMENTによるシーケンス順序のアサート), 我々は、より多くの情報をここで見つけました https://dev.to/fluffynuts/asserting-sequence-order-with-nexpect-ob3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol