测试Nothing的字符串值等同于String.Empty

时间:2010-02-24 16:54:18

标签: vb.net

我有一个类型为varchar的可空数据库字段。我正在为检索此字段值的服务方法编写单元测试。如果数据库字段为Null(这是所需的行为),则服务方法使用返回String.Empty值的自定义DAL。

在我的单元测试中,我使用的是Linq To SQL自动生成的类,以获取实际的数据库值并根据我的服务方法值对其进行测试。如果数据库字段为Null,则L2S类将字符串赋值为Nothing。我使用Assert.Equal来比较这两个值,但断言失败,因为Nothing的字符串值不等于空String。我想要传递这个断言,因为它们都代表一个空数据库值!

对于大多数数据库类型,L2S类将可空字段公开为Nullable(of T)类型,因此我通常会像这样测试相等(VB代码):

Assert.AreEqual(l2sValue.GetValueOrDefault, myValue, "Values not equivalent.")

然而,可空的varchars只是作为字符串公开,因此我不能对它们使用GetValueOrDefault。所以我的问题是,改变我的代码以识别Nothing和String.Empty的字符串值与此测试的目的相同的最优雅的方法是什么?

3 个答案:

答案 0 :(得分:1)

String.IsNullOrEmpty()

答案 1 :(得分:1)

如果没有提供值,为什么数据库没有设置为空字符串,而不是NULL?如果您的默认值为'',请告诉数据库 - 否则将不会知道。从长远来看,这可以为您节省很多麻烦。

答案 2 :(得分:0)

与C#,VB.Net treat Nothing as equal to empty string中的字符串比较不同,所以只需使用此

Assert.IsTrue(s1 = s2, "Values are not equivalent")