0

2列のテーブルがあります。

| DealerCode | TransactionID |
| 222223     | 98766         |

そして私はリストを返すこのメソッドを持っています

public List<Transaction> GetCurrentTransaction(string dealerCode, string transactionId)
    {
        return context.Transactions.Where(c => c.DealerCode == dealerCode && (c.TransactionID == transactionId)).ToList();
    }

ただし、単体テストを試みるたびに、常にtrueと表示されます。テストでわかるように、意図的に間違ったパラメーターを作成して失敗しました。

Assert.IsNotNull(tran.GetCurrentTransaction("2222231", "987661"));

私はフォーラムを検索し、グーグルで無駄にしようとしました。

4

4 に答える 4

1

MSTest を使用する場合は、次を追加できます。

Assert.IsTrue(tran.GetCurrentTransaction("2222231", "987661").Any());

Any()リストにオブジェクトがあるかどうかを確認します。機能単体テストでは、Any で条件も指定します。

于 2012-07-05T07:15:15.720 に答える
1

メソッドは List のインスタンスを返します。項目が含まれていない場合でも (基準に一致するレコードがないため)、リスト自体は作成されているため、NULL と等しくなく、それがユニットテストに合格する理由です。

于 2012-07-05T07:15:41.800 に答える
1

Assert.IsNotEmptyアサートを追加することをお勧めします - http://www.nunit.org/index.php?p=conditionAsserts&r=2.2.8

于 2012-07-05T07:13:20.337 に答える
0

@ChaosPandion のコメントは正しかった。GetCurrentTransaction メソッドは、常にリストのインスタンスを返します (null ではありません)。一致するものがない場合、そのリストにはアイテムが含まれません。次のようなコードを使用して、目的の結果を得ることができます。

Assert.IsTrue(tran.GetCurrentTransaction("2222231", "987661").Any());
于 2012-07-05T07:15:15.197 に答える