标签: rspec-rails

无法在rails 2.3.5中加载rspec生成器

我正在使用rails 2.3.5,我希望我们Rspec进行测试.我已经安装了rspec gem但是无法在生成器列表中列出rspec.我指的是https://github.com/rspec/rspec-rails.

group :development, :test do
  gem "rspec", "~> 1.3"
  gem "rspec-rails", "~> 1.3"
end

谢谢.

rspec ruby-on-rails ruby-on-rails-plugins rspec-rails ruby-on-rails-2

3
推荐指数
1
解决办法
461
查看次数

Rails 3.1 Rspec Rails 2 - 如何测试此控制器操作?

我需要知道如何测试这个控制器动作

  def create_mobile
      if mobile_user = MobileUser.authenticate(params[:email], params[:password])
        session[:mobile_user_id] = mobile_user.id
        respond_to do |format|
          format.json { head :ok }
        end
      else
        respond_to do |format|
          format.json { head :unauthorised }
        end
      end
  end
Run Code Online (Sandbox Code Playgroud)

该路由是对sessions/create_mobile的发布请求,您可以看到该操作仅响应json

我当前的控制器规格看起来像这样

describe SessionsController, "Logging in" do

  before(:each) do
    @mobile_user = FactoryGirl.create(:valid_mobile_user)
  end

  it "Should log in mobile user" do
    @request.env["HTTP_ACCEPT"] = "application/json"
    post :create_mobile, {:password => @mobile_user.password, :email => @mobile_user.email}
    response.should be_success
  end

  it "should fail log in mobile user" do
    @request.env["HTTP_ACCEPT"] = "application/json"
    post :create_mobile, {:password …
Run Code Online (Sandbox Code Playgroud)

json ruby-on-rails rspec-rails

3
推荐指数
1
解决办法
2764
查看次数

save_and_open_page(capybara/launchy)停止在项目中工作 - 错误

尝试调试一些在合并Rails两个项目时无法工作的规范.

我已经删除了我的Gemfile.lock并从头开始重新安装,我已经对特定的宝石进行了捆绑更新,而且整个很多但是当我尝试在我的请求规范中使用时出现错误

save_and_open_page

railsdev$ bin/rspec spec/requests/authentication_pages_spec.rb 
No DRb server is running. Running in local process instead ...
/Users/rb/Repos/Genie/spec/requests/authentication_pages_spec.rb:33:in `block (3 levels) in <top (required)>': undefined local variable or method `save_and_open_page' for #<Class:0x007f981d139608> (NameError)
    from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/example_group.rb:201:in `module_eval'
    from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/example_group.rb:201:in `subclass'
    from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/example_group.rb:187:in `describe'
    from /Users/rb/Repos/Genie/spec/requests/authentication_pages_spec.rb:27:in `block (2 levels) in <top (required)>'
    from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/example_group.rb:201:in `module_eval'
    from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/example_group.rb:201:in `subclass'
    from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/example_group.rb:187:in `describe'
    from /Users/rb/Repos/Genie/spec/requests/authentication_pages_spec.rb:24:in `block in <top (required)>'
    from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/example_group.rb:201:in `module_eval'
    from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/example_group.rb:201:in `subclass'
    from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/example_group.rb:187:in `describe'
    from /Users/rb/.rvm/gems/ruby-1.9.3-p125@genie/gems/rspec-core-2.10.1/lib/rspec/core/dsl.rb:18:in `describe'
    from /Users/rb/Repos/Genie/spec/requests/authentication_pages_spec.rb:13:in `<top …
Run Code Online (Sandbox Code Playgroud)

capybara rspec-rails ruby-on-rails-3.2

3
推荐指数
1
解决办法
4279
查看次数

RubyTutorial 10.5.2 Rspec测试微博分页

在阅读Michael Hartl撰写的Learn Rails书时,我对其中一个练习感到困惑. 通过Michael Hartl的例子学习Rails

"添加微博分页测试"

我的错误测试,放在登录用户"do"的'describe'中,如下所示:

describe "pagination" do
    before(:all) do 
      30.times { FactoryGirl.create(:micropost, user: user) }
    end
    after(:all) { user.feed.delete_all }
    page.should have_selector('div.pagination') }

    it "should list each micropost" do
      user.feed.paginate(page: 1).each do |user|
        page.should have_selector('li', text: user.name)
      end
    end
  end 
Run Code Online (Sandbox Code Playgroud)

无论我是做page.should还是page.should_not,测试都会显示为pass.

任何'提示/帮助'将不胜感激

rspec-rails ruby-on-rails-3 railstutorial.org

3
推荐指数
1
解决办法
1134
查看次数

Rails 4数据库清理程序

我正在尝试为rails 4应用程序完成一些测试,并且我一直遇到database_cleaner的问题.问题是数据库没有被清理,警告不断提高:

DEPRECATION WARNING: #increment_open_transactions is deprecated and has no effect. (called from block (3 levels) in <top (required)> at /Users/davidhahn/Dev/cta-projects/user-management2/spec/spec_helper.rb:49)
.DEPRECATION WARNING: #increment_open_transactions is deprecated and has no effect. (called from block (3 levels) in <top (required)> at /Users/davidhahn/Dev/cta-projects/user-management2/spec/spec_helper.rb:49)
WARNING:  there is already a transaction in progress
WARNING:  there is already a transaction in progress
.FFFFDEPRECATION WARNING: #increment_open_transactions is deprecated and has no effect. (called from block (3 levels) in <top (required)> at /Users/davidhahn/Dev/cta-projects/user-management2/spec/spec_helper.rb:49)
.DEPRECATION WARNING: #increment_open_transactions is deprecated …
Run Code Online (Sandbox Code Playgroud)

rspec-rails ruby-on-rails-4 database-cleaner

3
推荐指数
1
解决办法
3742
查看次数

无法在Rails 3.2 + Rspec 2.13下测试引擎路由

在我的引擎'Utilizer'中,我试图用Rspec 3.2测试路线.命名空间是孤立的

# lib/utilizer/engine.rb
module Utilizer
    class Engine < ::Rails::Engine
        isolate_namespace Utilizer
        ...
    end
end
Run Code Online (Sandbox Code Playgroud)

引擎安装到虚拟应用程序:

    # spec/dummy/config/routes.rb
    Rails.application.routes.draw do
      mount Utilizer::Engine => "/utilizer", as: 'utilizer'
    end
Run Code Online (Sandbox Code Playgroud)

对spec_helper.rb我添加了几个配置如下(从这里):

# spec/spec_helper.rb
RSpec.configure do |config|
  ...
  config.before(:each, type: :routing)    { @routes = Utilizer::Engine.routes }
  ...
end 
Run Code Online (Sandbox Code Playgroud)

当我定义一条路线时:

# config/routes.rb
Utilizer::Engine.routes.draw do
  resources :auths, id: /\d+/, only: [:destroy]
end
Run Code Online (Sandbox Code Playgroud)

Rake为虚拟应用程序正确显示:

$ spec/dummy > bundle exec rake routes

$ utilizer /utilizer Utilizer::Engine
$ Routes for Utilizer::Engine:
$ auth DELETE /auths/:id(.:format) utilizer/auths#destroy {:id=>/\d+/} …
Run Code Online (Sandbox Code Playgroud)

routing rspec rule-engine rspec-rails ruby-on-rails-3

3
推荐指数
1
解决办法
1209
查看次数

如何关闭Rspec的详细日志记录?

运行我们的rspec测试套件时

bundle exec rspec spec/
Run Code Online (Sandbox Code Playgroud)

日志中包含很多日志语句.特别是,控制器规格多次显示这样的事情:

{"controller"=>"myController", "action"=>"create"}
Run Code Online (Sandbox Code Playgroud)

我想摆脱这些但找不到来源.没有与这样的匹配的puts语句,也没有任何Rails.logger调用.我假设这是一个日志级问题,但我可能是错的.在environment/test.rb中设置config.log_level无效.

当前的rspec配置如下所示

RSpec.configure do |config|
  config.include Devise::TestHelpers, :type => :controller
  config.mock_with :rspec


  config.before(:suite) do
    DatabaseCleaner.strategy = :truncation
    DatabaseCleaner.orm = "mongoid"
  end

  config.before(:each) do
    DatabaseCleaner.clean
  end

  config.color_enabled = true
  config.tty = true
  config.formatter =  :documentation # :progress, :html, :textmate
end
Run Code Online (Sandbox Code Playgroud)

关于如何禁用这些类型的日志的任何想法?

旁注:Gemfile使用'rails','3.2.13'和'rspec-rails','2.14.0'

ruby rspec ruby-on-rails rspec-rails

3
推荐指数
1
解决办法
3373
查看次数

在Rspec中定义类

我想测试一个模块包含在一个类中.我正在尝试在RSpec中定义一个新类:

describe Statusable do
  let(:test_class) do
    class ModelIncludingStatusable < ActiveRecord::Base
      include Statusable
      statuses published: "????????????", draft: "????????"
    end
  end

  describe '#statuses' do
    it 'sets STATUSES for a model' do
      test_class::STATUSES.should == ["????????????", "????????"]
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

TypeError:
       [ActiveModel::Validations::InclusionValidator] is not a class/module
Run Code Online (Sandbox Code Playgroud)

这可能是因为Statusable我有:

validates_inclusion_of  :status, :in => statuses,
            :message => "{{value}} ?????? ???? ????? ??: #{statuses.join ','}"
Run Code Online (Sandbox Code Playgroud)

但如果我发表评论,我会得到:

TypeError:
       ["????????????", "????????"] is not a class/module
Run Code Online (Sandbox Code Playgroud)

也许新的类定义不是最好的选择,那我该怎么办?即使不是,我如何在RSpec中定义一个类?我该如何解决这个错误?

ruby rspec ruby-on-rails rspec2 rspec-rails

3
推荐指数
1
解决办法
4595
查看次数

水豚期望page.selector to_have

我需要验证页面特定部分中某些文本的存在。

expect(page).to 将会输出过多的文本,这对于包含协议条款的页面特别麻烦,因为协议条款一直很长。

我想转变expect(page).to(have_text(成类似expect('#id').to(have_text(...)

我无法弄清楚如何选择ID引用的页面部分。我应该expect(page)在里面写我within('#id')吗?

编辑:如果可能,针对嵌套标签的解决方案

<div id="id">
  <span class="nested">...</span>
  Text I want to check with have_text()
</div>`
Run Code Online (Sandbox Code Playgroud)

rspec capybara rspec-rails ruby-on-rails-5

3
推荐指数
1
解决办法
2951
查看次数

如何编写活动记录范围的测试?

如何为活动记录范围编写测试?例如

class Post < ActiveRecord::Base
  scope :recent, -> { order("posts.created_at DESC") }
  scope :published, -> { where("status = 1") }
end
Run Code Online (Sandbox Code Playgroud)

我正在使用Rspec进行测试

RSpec.feature Post, :type => :model do
  let(:post) { build(:post) }

  describe 'test scopes' do
  end
end
Run Code Online (Sandbox Code Playgroud)

testing rspec ruby-on-rails rspec-rails

3
推荐指数
1
解决办法
2323
查看次数