我正在使用Frontier::Daemon为Robot Framework测试自动化框架构建测试库服务器。我让测试库服务器在本地执行代码,但是当它运行/执行XML-RPC时,就是我遇到问题。部分问题也可能是因为我使用Perl反射来执行测试命令。
也许RPC::XML可能更合适,但在我开发服务器时,Frontier :: Daemon似乎更容易开始。
Perl反射代码来自本网站上发布的帖子以及维基百科的代码反射页面(Perl部分)。
代码托管在Google Code,您可以browse the code或查看以供审核。问题是described in more detail at the project site。
我希望Perl开发人员社区可以给我一些关于问题根源以及如何解决问题的建议。
谢谢, 戴夫
答案 0 :(得分:1)
有几件事你不知道。首先,Frontier :: Daemon将您提供的“方法”称为简单的子例程调用,但是您提供的两个方法希望被称为远程服务器对象的方法。更改代码以执行此操作:
my $svr = Frontier::Daemon->new(
methods => {
get_keyword_names => sub { $self->get_keyword_names(@_) },
run_keyword => sub { $self->run_keyword(@_) },
},
...
按照他们的预期调用您的方法。
其次,你的get_keyword_names尝试返回一个数组,但是你使用的接口似乎只允许一个返回值,并且在标量上下文中调用方法,导致get_keyword_names返回数组中元素的数量。我想你想要返回对数组的引用:
return \@methods;