嗨,我的应用程序中没有任何前端。我愿意发布一个可供不同客户使用的RESTful API。任何指针如何进行黄瓜测试?控制器中的每个操作仅生成XML提要。有什么指示或建议吗?
答案 0 :(得分:9)
webrat的visit
函数接受http_method作为第二个参数。您还可以在以下黄瓜规则中测试您的api:
When /^I restfully delete (?:|the )user "([^\"]*)"$/ do |login|
visit(path_to("user \"#{login}\" page"), :delete)
end
答案 1 :(得分:7)
我认为Webrat不仅仅是你需要的东西。 对于XML Feed测试,您不需要像Webrat这样的浏览器模拟器,当您真的没有任何HTML页面时,它会加载页面并分析所有标记(链接,表单等)。
你需要像Curl(http://curl.haxx.se)或Curb(在rubyforge上,这是Curl的ruby绑定)或Patron(在rubyforge上)。
这些库可以根据您的喜好制作请求标头(例如设置Content-Type,在GET PUT POST DELETE HEAD等中选择)并获得响应,并在需要时可能遵循302重定向。
返回的响应可以转换为XML对象,可用于Ruby的XML解析器可用于测试输出。此外,您可以编写XMLMapping类(在rubyforge上)将XML输出转换为Ruby对象并测试它们的属性等。这更清晰,恕我直言。
答案 2 :(得分:5)
jayzes已经使用Rack :: Test :: Methods,JSONpath,Nokogiri等分享了他的黄瓜测试步骤示例,为json / xml API编写测试,您可能想要参考并为自己的步骤创建更多。
答案 3 :(得分:2)
设置RESTful路由后,您应该可以使用Webrat访问不同的路由。然后,您可以测试每条路由返回符合您期望的XML。
这是一篇博客文章,描述了如何在RSpec中测试XML输出: Testing XML output
Webrat是一个无头浏览器,这意味着你可以模拟浏览器,而无需在开发机器上打开像FireFox这样的真实浏览器。这意味着您只需在定义的步骤中键入“访问'用户/'”之类的内容,并模拟访问您的应用程序的用户。
最后Pragmatic book on RSpec(仍处于测试阶段)是如何将Cucumber,Webrat和RSpec结合使用并通过BDD推动应用程序开发的重要资源。
答案 4 :(得分:0)
我试图这样做并且陷入了restful_authentication的一个主要问题(使用AASM,似乎是restful_auth的内部模型之一)并且已经达到了登录的解决方案:
Given /^I am logged in with a new account$/ do
login = "test"
@current_user = User.new(
:login => login,
:password => 'generic',
:password_confirmation => 'generic',
:email => "#{login}@example.com",
:state => "active"
)
@current_user.save
x = User.find_by_login(login)
x.state = "active"
x.save!
visit "/login"
fill_in("login", :with => login)
fill_in("password", :with => 'generic')
click_button
response.body.should =~ /Logged in successfully/m
end
模块化它以获得更清晰的测试语料库,这是为了演示我找到的概念。