【发布时间】:2011-01-20 15:08:57
【问题描述】:
我有一个 varchar 类型的可为空的数据库字段。我正在为检索该字段值的服务方法编写单元测试。服务方法使用自定义 DAL,如果数据库字段为 Null(这是所需的行为),则返回 String.Empty 的值。
在我的单元测试中,我使用 Linq To SQL 自动生成的类来获取实际的数据库值并根据我的服务方法值对其进行测试。如果数据库字段为 Null,则 L2S 类为字符串分配 Nothing 值。我正在使用 Assert.Equal 来比较这两个值,但是断言失败,因为 Nothing 的字符串值不等于空字符串。我希望这个断言通过,因为它们都代表空数据库值!
对于大多数数据库类型,L2S 类将可空字段公开为可空(T)类型,所以我通常会像这样(VB 代码)测试相等性:
Assert.AreEqual(l2sValue.GetValueOrDefault, myValue, "Values not equivalent.")
但是,可为空的 varchar 只是作为字符串公开,所以我不能在它们上使用 GetValueOrDefault。所以我的问题是,改变我的代码以识别 Nothing 和 String.Empty 的字符串值对于此测试而言是等效的,最优雅的方法是什么?
【问题讨论】:
标签: vb.net