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();
    }

但是每次我尝试对其进行单元测试时,它总是显示为真,正如您在我的测试中看到的那样,我故意创建了一个错误的参数,因此它会失败。

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

我尝试通过论坛搜索和谷歌搜索无济于事。

4

4 回答 4

1

您可能想添加一个Assert.IsNotEmpty断言 - http://www.nunit.org/index.php?p=conditionAsserts&r=2.2.8

于 2012-07-05T07:13:20.337 回答
1

如果您使用 MSTest,您可以添加:

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

Any()检查列表中是否有对象。功能单元测试还将在 Any.xml 中指定条件。

于 2012-07-05T07:15:15.720 回答
1

您的方法返回 List 的一个实例,即使它不包含任何项目(因为没有符合条件的记录),列表本身仍然被创建,因此不等于 NULL,这就是您的单元测试通过的原因。

于 2012-07-05T07:15:41.800 回答
0

@ChaosPandion 在他的评论中说得对。您的 GetCurrentTransaction 方法将始终返回列表的实例(不为空)。在没有匹配项的情况下,该列表将不包含任何项目。您可以使用类似于以下的代码来获得您所追求的结果。

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