我已经开始在Delphi 2010中编写Web服务并进行单元测试以确保它们按计划运行。我传递的代码的单元测试,但是当作为服务调用时(即通过SoapUI),一个Web服务方法没有返回值。经过几个小时的搜索代码后,我发现这是因为我的返回对象上的属性不在界面的已发布部分中;他们在公共部门。
我的单元测试是否有办法检查对象的变量可见性,以便将来可以避免这个问题?我试图用RTTI找到一种方法但却找不到任何东西。
答案 0 :(得分:6)
您可以通过尝试访问该属性的RTTI来确定是否已声明属性已发布。公共财产没有RTTI,已发布的财产。
这样的事情:
if (GetPropInfo(myobject, "PropertyName") != null) then
// it's published...
有关RTTI的更多信息,请参阅Brian Long的文章:http://www.blong.com/Conferences/BorConUK98/DelphiRTTI/CB140.htm
答案 1 :(得分:3)
你可以很容易地使用RTTI。您可以在TypInfo单元中使用经典的RTTI函数GetPropInfo。如果它返回 nil ,则不存在该名称的已发布属性。或者您可以使用扩展的RTTI进行查找并查看Visibility属性,该属性将告诉您声明的可见性级别。