我正在开发一个应用程序,利用 Twitter OAuth,并且在尝试测试 Twitter OAuth 时遇到了困难。特别是我想使用 Cucumber 和 Webrat/Selenium 来测试功能,但是在注册/登录过程中的某些步骤会根据用户是否已经授权给该应用程序访问 OAuth 而表现出不同的行为,等等。
有没有人能够成功地模拟或存根 Ruby on Rails Cucumber 功能中 Twitter OAuth 系统的部分或全部内容(或任何其他测试框架)?任何帮助都将不胜感激。
有没有人能够成功地模拟或存根 Ruby on Rails Cucumber 功能中 Twitter OAuth 系统的部分或全部内容(或任何其他测试框架)?任何帮助都将不胜感激。
我在我的测试案例中使用了模拟。我手动测试,找出了应该得到的响应,并覆盖了Ruby oAuth gem。以下是一个成功发送推文的测试案例(使用Shoulda):
context 'cork/tweet' do
setup do
response = Net::HTTPResponse.new("1.1", 200, "")
Net::HTTPResponse.any_instance.stubs(:body).returns JSON_RESPONSE
OAuth::AccessToken.any_instance.stubs(:post).returns(response)
post :create, :cork_id => @cork.id, :message=>MESSAGE
end
should_respond_with :redirect
should_change('Tweet.count' , :by => 1) {Tweet.count}
.. and so on
JSON_RESPONSE是我从手动测试中收集到的答案 - 我在lib/oauth/tokens/access_token.rb:44:in `post'中放置了一个printf来捕获响应。
否则,这几乎是不可能测试的,因为正如你所指出的,Twitter没有办法从API中取消授权您的应用程序,并且如果您已经授权了应用程序,则会以不同的方式运行。
距离原始帖子已经过去一年多了,但我最近发现了这篇关于使用TwitterAuth和Cucumber的文章,对我很有帮助。
http://blog.zerosum.org/2009/7/13/twitter-auth-integration-testing