3

私はこの非常に優れたミニ ORM であるSimple.Dataを使用して、多くのテスト データをすばやく簡単にセットアップしています。アサーション用に拡張したいと思います。たとえば、カウントでアサートしたいと思います:

Db.MyTable.GetCount(); <- Returns a dynamic

FluentAssertions で行うように多かれ少なかれ評価できるように。次のようになります。

Db.MyTable.GetCount().ShouldBe(X);

しかし、ダイナミクスの利点を失わずにこれを行うのは非常に難しいと思います。

これをどのように行うことができるか、または理由の範囲内で可能かどうかのヒントを誰かが持っていますか?

私は現在、GitHub で src をトラバースして、これをローカルで実行できる方法を見つけようとしており、方法を見つけるために即席でいじっています。

4

2 に答える 2

2

残念ながら、これに対する幸せな答えはありません。ここで Jon S と Eric L によって説明されているように、動的メソッドと拡張メソッドは混在しません:拡張メソッドと動的オブジェクト

答えは、その質問のように、ShouldBe を静的メソッドとして呼び出すことです。

AssertionExtensions.ShouldBe(Db.MyTable.GetCount(), 3);

または、メソッドの戻り値を既知の型にインラインキャストします。

((int)Db.MyTable.GetCount()).ShouldBe(3);

または、調査中のように、Impromptu を使用して、GetCount メソッドを使用してインターフェイスを MyTable に適用します。Simple.Dataと Impromptu に関する私のブログ投稿を見たことがあると思います。-on-simple-data/

于 2013-01-25T13:00:38.907 に答える
0

作成しているクラスでは、独自のカスタム アサーション クラスを作成し、作成しているオブジェクト クラスをそれらから継承させないでください。

public class MyClass : MyCustomExceptionClass
{

}

そうすれば、メソッドを好きなようにテストするのが簡単になります

于 2013-01-25T12:46:36.660 に答える