测试使用带有 Cucumber 的设计令牌可验证模块的 JSON API
Posted
技术标签:
【中文标题】测试使用带有 Cucumber 的设计令牌可验证模块的 JSON API【英文标题】:Testing JSON API that uses Devise token authenticable module with Cucumber 【发布时间】:2011-08-26 00:23:08 【问题描述】:我正在为 RESTfull JSON 服务编写验收测试。我希望能够针对生产服务器运行测试。此 API 由 iphone 客户端使用。对于身份验证,JSON 服务使用 Devise 身份验证令牌模块。
简而言之,协议如下:
iphone:使用参数 email=user@serivce.com&pass=secretpass POST /api/v1/tokens 服务器:返回 200 和以下 JSON "token":"UYUKJHBKHJJHSAD" iphone: GET /api/v1/messages?auth_token=UYUKJHBKHJJHSAD
一切都很好。
用 Cucumber 进行测试的最佳方法是什么?
我正在使用来自https://github.com/jayzes/cucumber-api-steps 的 api_steps 并且我一起破解了一些东西,以便 auth_token 与每个 GET 请求一起传递,但这有点像破解。
我所做的是创建以下步骤:
我以用户“admin@myservice.com”身份验证,密码为“bingobingo”
我在其中设置了一个全局变量 auth_token,然后将其附加到所有 GET 请求中。丑!
我在问你 Cucumber/Rails/Test 大师!这样做的最佳方法是什么?
【问题讨论】:
【参考方案1】:我发现 RSpec 比 Cucumber 更易于使用。
# spec/api/messages_spec.rb
describe "messages", :type => :api do
it "retrieves messages" do
get "/api/v1/messages", :token => user.authentication_token
@messages = user.messages # this is the expected result
last_response.body.should eql @messages.to_json
last_response.status.should eql 200
end
end
# spec/support/api/helper.rb, so we have access to get, post, put, delete methods
module ApiHelper
include Rack::Test::Methods
def app
Rails.application
end
end
RSpec.configure do |c|
c.include ApiHelper, :type => :api
end
【讨论】:
以上是关于测试使用带有 Cucumber 的设计令牌可验证模块的 JSON API的主要内容,如果未能解决你的问题,请参考以下文章
每次测试运行时编写带有唯一数据的 Cucumber 特征文件
使用 Cucumber 和 SpringBoot 进行每次测试的数据源