标签: rspec

生成具有所有RESTful功能的控制器

我正在尝试生成一个控制器,其中包含所有RESTful操作.我在链接文本中读到,我需要做的就是使用只有控制器名称来调用生成器,我会得到它.所以,我运行了"script/generate rspec_controller Properties",我得到了一个空的控制器.

任何其他建议将不胜感激.

rest controller rspec ruby-on-rails

83
推荐指数
7
解决办法
9万
查看次数

Capybara:如何通过ID填写输入字段

我有这个:

<input class="string optional" 
    id="course_group_courses_attributes_2_name" 
    name="course_group[courses_attributes][2][name]" 
    placeholder="Lengua" 
    size="15" 
    type="text" />
</div> 
Run Code Online (Sandbox Code Playgroud)

如何通过ID填写该字段?

rspec capybara

83
推荐指数
3
解决办法
6万
查看次数

在请求规范中对验证进行验证

在编写请求规范时,如何设置会话和/或存根控制器方法?我正在尝试在我的集成测试中删除身份验证 - rspec/requests

这是一个测试的例子

require File.dirname(__FILE__) + '/../spec_helper'
require File.dirname(__FILE__) + '/authentication_helpers'


describe "Messages" do
  include AuthenticationHelpers

  describe "GET admin/messages" do
    before(:each) do
      @current_user = Factory :super_admin
      login(@current_user)
    end

    it "displays received messages" do
      sender = Factory :jonas
      direct_message = Message.new(:sender_id => sender.id, :subject => "Message system.", :content => "content", :receiver_ids => [@current_user.id])
      direct_message.save
      get admin_messages_path
      response.body.should include(direct_message.subject) 
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

帮助者:

module AuthenticationHelpers
  def login(user)
    session[:user_id] = user.id # session is nil
    #controller.stub!(:current_user).and_return(user) # controller is nil
  end
end …
Run Code Online (Sandbox Code Playgroud)

integration-testing rspec stubbing ruby-on-rails-3

83
推荐指数
2
解决办法
3万
查看次数

spec/rails_helper.rb与spec/spec_helper.rb的不同之处是什么?我需要它吗?

我是第二次做Rails教程.当我进入这个

rails generate integration_test static_pages
Run Code Online (Sandbox Code Playgroud)

我得到的spec/rails_helper.rbspec/spec_helper.rb,而不是仅仅spec/spec_helper.rb

现在,当我运行我的测试时,它们比我上次这样做时更长(更"冗长")并且更慢.我想知道两个文件之间有什么区别,如果我做错了什么.另外,有没有办法摆脱rails_helper.rb文件而不搞乱一切?

testing rspec ruby-on-rails rspec-rails rspec3

83
推荐指数
1
解决办法
2万
查看次数

如何使用Capybara声明元素数量并带有正确的错误消息?

我知道在Capybara,你可以这样做:

page.should have_css("ol li", :count => 2)
Run Code Online (Sandbox Code Playgroud)

但是,假设该页面仅具有一个匹配元素,则该错误不是非常具有描述性:

  1) initial page load shows greetings
 Failure/Error: page.should have_css("ol li", :count => 2)
 expected css "ol li" to return something
Run Code Online (Sandbox Code Playgroud)

而不是这个相当模糊的错误消息,有没有办法以这样的方式编写断言,即错误输出将类似于'匹配'ol li',期望:2,找到:1'.显然我可以自己为这样的行为制作一个自定义逻辑 - 我问有没有办法在开箱即用的情况下做到这一点?

对于它的价值,我使用的是Selenium驱动程序和RSpec.

dsl rspec capybara

82
推荐指数
5
解决办法
4万
查看次数

如何在不运行rake规范的情况下为Rails rspec测试准备测试数据库?

经过重大故障排除后,我发现我需要运行rake spec一次(我可以使用control-c中止),然后才能直接运行rspec(例如,在我们规范的子集上).我们正在运行Rails 3.0.7和RSpec 2.5.0.

显然,rake正在运行一些重要的数据库设置任务/代码(我们在根级别Rakefile和其他地方都有自定义代码).

如何在不运行的情况下运行rake测试数据库设置任务/代码rake spec

除了能够在一个文件子集上运行rspec之外,我还使用specjour在多个核心上传播我们的规范(尚未成功将它们传播到局域网中),但我看到了与运行rspec相同的行为直接:我需要rake spec在specjour工作之前在每个测试数据库上运行(假设有两个核心):

rake spec TEST_ENV_NUMBER=1
control-c (after tests start)
rake spec TEST_ENV_NUMBER=2
control-c (after tests start)
specjour
Run Code Online (Sandbox Code Playgroud)

注意:我的config/database.yml有这个测试条目(对于并行测试宝石来说很常见):

test:
  adapter: postgresql
  encoding: unicode
  database: test<%=ENV['TEST_ENV_NUMBER']%>
  username: user
  password:
Run Code Online (Sandbox Code Playgroud)

parallel_tests似乎正确设置了它的数据库,但我们的许多规范都失败了.

我还应该提一下,运行specjour prepare会导致Postgres记录它无法找到数据库的错误,但它会创建它们(没有表).在后续运行中,不会记录任何错误,也不会创建任何表.我的整个问题可能只是一个错误prepare,所以我在github上报告了它.

我认为我可以通过设置Specjour::Configuration.prepare.specjour/hooks.rb 在每个specjour测试数据库上运行任意代码,所以如果有任何rake任务或我需要运行的其他代码,它可能在那里工作.

rspec ruby-on-rails rspec2 ruby-on-rails-3 specjour

81
推荐指数
4
解决办法
9万
查看次数

Rspec没有看到我的模型类.未初始化的常量错误

我正在为Ruby on Rails应用程序中的模型编写Rspec测试.我在启动'rspec spec'时收到此错误

command:
/spec/models/client_spec.rb:4:in `<top (required)>': uninitialized constant Client (NameError)
Run Code Online (Sandbox Code Playgroud)

我使用Rails 4.0.0和Ruby 2.0.0

这是我的client_spec.rb:

require 'spec_helper'


describe Client do

  it 'is invalid without first_name', :focus => true do
     client = Client.new
     client.should_not be_valid
  end
end
Run Code Online (Sandbox Code Playgroud)

和Gemfile:

source 'https://rubygems.org'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.0.0.rc1'

# Use sqlite3 as the database for Active Record
gem 'sqlite3'

# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.0.rc1'

# Use Uglifier as compressor for JavaScript assets …
Run Code Online (Sandbox Code Playgroud)

testing rspec model ruby-on-rails

81
推荐指数
6
解决办法
6万
查看次数

RSpec中的it块和指定块之间的差异

RSpec中的it块和指定块之间有什么区别?

subject { MovieList.add_new(10) }

specify { subject.should have(10).items }
it { subject.track_number.should == 10}
Run Code Online (Sandbox Code Playgroud)

他们似乎做同样的工作.只是检查确定.

ruby rspec ruby-on-rails

79
推荐指数
1
解决办法
2万
查看次数

一些JS运行后如何让Capybara检查可见性?

加载页面后,我有运行和隐藏的代码,并根据xhr返回的数据显示各种项目.

我的集成测试看起来像这样:

it "should not show the blah" do
    page.find('#blah').visible?.should be_true
end 
Run Code Online (Sandbox Code Playgroud)

当我在上下文中手动转到该测试运行的页面时,#blah 并不像我预期的那样可见.我怀疑Capybara正在查看页面的初始状态(在这种情况下是不可见的),在JS运行之前评估DOM的状态并且未通过测试.

是的,我设置:js => true了包含的描述块:)

任何想法将不胜感激!我希望我不必在这里故意拖延,感觉不稳定,会减慢速度.

ruby integration-testing rspec capybara

79
推荐指数
6
解决办法
7万
查看次数

如何在Factory Girl中定义数组/哈希?

我正在尝试编写一个模拟来自Dropbox的REST服务的一些返回值的测试,该服务通过嵌套哈希为我提供数据.

我无法弄清楚如何编码我的工厂,因为返回结果是一个带有内部的数组.会怎么样?

Factory.define :dropbox_hash do
 ??
end
Run Code Online (Sandbox Code Playgroud)

Dropbox数据如下所示:

 ["/home", {"revision"=>48, "rev"=>"30054214dc", "thumb_exists"=>false, "bytes"=>0, "modified"=>"Thu, 29 Dec 2011 01:53:26 +0000", "path"=>"/Home", "is_dir"=>true, "icon"=>"folder_app", "root"=>"app_folder", "size"=>"0 bytes"}] 
Run Code Online (Sandbox Code Playgroud)

在我的RSpec中,我想要像这样的工厂电话:

Factory.create(:dropbox_hash)
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails-3 factory-bot

78
推荐指数
4
解决办法
3万
查看次数