小编Mar*_*her的帖子

如何在rspec中编写Rails 3.1引擎控制器测试?

我编写了一个带有命名空间Posts的Rails 3.1引擎.因此,我的控制器可以在app/controllers/posts /中找到,我的模型可以在app/models/posts等中找到.我可以很好地测试模型.一个型号的规格看起来像......

module Posts
  describe Post do
    describe 'Associations' do
      it ...
      end
Run Code Online (Sandbox Code Playgroud)

......一切正常

但是,控制器的规格不起作用.Rails引擎安装在/ posts,但控制器是Posts :: PostController.因此,测试将控制器路由视为帖子/帖子.

  describe "GET index" do
    it "assigns all posts as @posts" do
      Posts::Post.stub(:all) { [mock_post] }
       get :index
       assigns(:posts).should eq([mock_post])
    end
  end
Run Code Online (Sandbox Code Playgroud)

产量......

  1) Posts::PostsController GET index assigns all posts as @posts
     Failure/Error: get :index
     ActionController::RoutingError:
     No route matches {:controller=>"posts/posts"}
     # ./spec/controllers/posts/posts_controller_spec.rb:16
Run Code Online (Sandbox Code Playgroud)

我已经在测试应用程序的路由文件...:命名空间等尝试了各种技巧,但无济于事.

我该如何工作?似乎它不会,因为引擎将控制器置于/ post,但命名空间将控制器置于/ posts/posts以进行测试.

rspec routes ruby-on-rails-3 ruby-on-rails-3.1

45
推荐指数
4
解决办法
9499
查看次数

Rails 3.1 Edge打破XmlMarkup :: Builder?

网上有很多例子(例如http://techoctave.com/c7/posts/32-create-an-rss-feed-in-rails),展示了如何使用Builder制作精美的RSS源.规范模板是这样的:

xml.instruct! :xml, :version => "1.0" 
xml.rss :version => "2.0" do
xml.channel do
  xml.title "Your Blog Title"
  xml.description "A blog about software and chocolate"
  xml.link posts_url

  for post in @posts
    xml.item do
      xml.title post.title
      xml.description post.content
      xml.pubDate post.posted_at.to_s(:rfc822)
      xml.link post_url(post)
      xml.guid post_url(post)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这在Rails 3.0.7中运行良好.在Rails 3.1 Edge中,每个命令似乎都会产生......

Rendered home/index.rss.builder (25.2ms)
Completed 500 Internal Server Error in 875ms

ActionView::Template::Error (wrong number of arguments (1 for 0)):
1: xml.instruct!(:xml, :encoding => "UTF-8")
2: 
3: xml.rss :version => "2.0" …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails-3.1

6
推荐指数
1
解决办法
1325
查看次数

Poltergeist和Capybara可以单独使用吗?

假设我在Mac OS X上安装了PhantomJS,我可以编写一个普通的旧Ruby脚本(没有Cucumber,没有RSpec)来驱动Poltergeist吗?换句话说,我想要一些宝石,将Capybara驱动程序设置为Poltergeist,然后开始调用page.fn()来下载页面,分析内容等等?

更新:这是我创建的.它似乎工作.

require 'awesome_print'
require 'capybara'
require 'capybara/dsl'
require 'capybara/poltergeist'

Capybara.javascript_driver = :poltergeist
Capybara.run_server = false
Capybara.app_host = 'http://www.google.com'
Capybara.current_driver = :poltergeist

include Capybara::DSL

visit '/'

page.driver.network_traffic.each do |request|
  ap request.response_parts
end
Run Code Online (Sandbox Code Playgroud)

我知道裸体包含是坏的,但我只是在我将它封装在一个类之前的那一刻.

反馈?

capybara poltergeist

5
推荐指数
1
解决办法
512
查看次数

可以rake db:在多个数据库中创建create table吗?

我可以使用两个数据库创建表db:create吗?例如,我可以在database.ymlfor one_development和for中two_development创建条目rake db:create吗?我知道rake db:create:一切正常 - 我只是想知道是否有办法根据RAILS_ENV对创建的内容进行分段?

database ruby-on-rails

4
推荐指数
1
解决办法
2046
查看次数