2011-04-15 65 views

回答

10

将请求摘入Request Object。通过这种方式,您可以测试代码而无需实际制作请求。那么测试很简单。

class RequestTest extends PHPUnit_Framework_TestCase 
{ 
    public function testRequest() 
    { 
     $request = new Request(); 
     $request->setMethod('PUT'); 
     $request->setPutData(…); 
     $this->assertSomething(
      $this->testSubjectUsingRequest->process($request) 
     ); 
    } 
} 

如果你要测试的响应从web服务,模拟/存根的web服务的API。

关于Stubbing and Mocking Web Services,虽然建议的内置web服务模拟工具适用于具有WSDL的Soap服务,但PHPUnit章节中还有一章,因此您必须手动配置您的Mocks(就像使用任何模拟资源一样)。

如果这不能解决您的问题,请更新您的问题,并提供有关RESTful服务的更多详细信息。

+0

嗨戈登,谢谢你的回复。我们通过从命令行发送包含服务操作和服务类名称的URI来实际执行服务。所以我怀疑如果EXEC在PHPUnit中工作。如果有,它将解决我的问题(因为我可以使用EXEC运行我在命令行上运行的任何程序并测试服务) – sri 2011-04-17 22:38:50

+0

@sri PHPUnit的Test Helpers扩展可以重命名函数。请参阅https://github.com/sebastianbergmann/php-test-helpers – Gordon 2011-04-18 06:08:40

-2

OnionTest http://www.oniontest.org/ 我有完全相同的问题。 Selenium,PHPUNIT非常棒,但它仍然是快速轻松测试rest/http服务的使命。我花了我大部分的时间,清理数据库,伪造http发布与浏览器/脚本,检查结果在DB这样的例子不胜枚举:)所以我写了OnionTest

这一切都归结到几个文本文件,有urls.txt被调用,并与你写的onions.txt(你的测试断言)进行比较。写一个洋葱:)

它给了我下面的

  • EASY/FAST方式做GET /文本方面与参数的发布网址
  • 检查响应(代码体)和文本应没有。
  • 对响应以及计数xpath结果运行xpath(xml)表达式
  • 详细的url调用! (听起来很简单),但DAMN很有用!在得到奇怪的结果后,你做的第一件事是什么。转储网址/通话。 OnionTest您只需设置“详细|| 1”的URL

O和它是免费的,它的测试版,这是一个周末的项目 - 依然共度,但非常实用!请参阅Getting Started快速Hello World指南。其他明智的看到“示例页面”快速“TableRowCount”和“TableRowRecord”OnionTest

无耻的自我推动! 写一个洋葱:)

+0

非常酷的想法,但需要支持标头/ cookie。您还将如何测试经过身份验证的API。 – 2012-05-30 18:51:30

+6

链接已死,你会把它放在github上吗? – 2012-09-11 19:03:51