我有一个子程序
Sub AssertTrue(condition, success, error)
If condition Then
%><div style='color:black'><%=success%></div><%
Else
%><div style='color:red'><%=error%></div><%
End If
End Sub
当我像这样调用它时:
AssertTrue IsNullOrWhiteSpace(Empty), "Empty is blank.", "Empty is not blank."
用这个函数
' Determines if a string is null, blank, or filled with whitespace.
' If an array of strings is passed in, the first string is checked.
Function IsNullOrWhiteSpace(str)
If IsArray(str) Then
If str.Length > 0 Then str = str(0) Else str = Empty
End If
IsNullOrWhiteSpace = IsEmpty(str) Or (Trim(str) = "")
End Function
然后,我得到一个类型不匹配的错误,在... AssertTrue
调用。但VBscript是一种弱类型的语言,我看不出类型在哪里被混淆了--------。IsNullOrWhiteSpace
确实返回一个布尔值! 为什么我会出现这个错误,如何解决这个问题?
是的,我正试图在VBscript中创建单元测试,如果有更好的方法,请告诉我... :) 如果有更好的方法,请告诉我... :)
Type Mismatch错误正是它所说的,你引用的类型不正确或不符合预期。
问题出在 IsNullOrWhiteSpace()
函数调用,在这一行。
If str.Length > 0 Then str = str(0) Else str = Empty
将字符串引用为对象引用而引起的。字符串并不像对象类型那样包含属性,所以在这一行中的 str.Length
导致类型不匹配错误。
要检查一个字符串的长度,你应该使用。
Len(str)
在这种情况下,你似乎是在检查一个数组,所以你应该使用。
UBound(str)