标签: rspec2

设置RSpec来测试gem(不是Rails)

使用添加的rspec-rails生成器来设置RSpec以测试Rails应用程序非常容易.但是如何添加RSpec来测试开发中的宝石?我不是在使用珠宝商或这样的工具.我只是使用Bundler(bundle gem my_gem)来设置新gem的结构并手动编辑*.gemspec.我还加入s.add_development_dependency "rspec", ">= 2.0.0"了gemspec并做了一个bundle install.

是否有一些很好的教程,接下来要做什么让RSpec工作?

testing gem rubygems rspec rspec2

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

在创建新的Rails应用程序时,如何告诉Rails使用RSpec而不是test-unit?

我已经test-unit安装和rspec安装(沿-core,-expectations,-mocks-rails版本2.6.x的).当我运行该命令时rails new foo,它用于test-unit生成测试存根文件而不是rspec.

有没有一个选项,我可以告诉rails使用rspec来生成测试?

rspec testunit rspec2 ruby-on-rails-3

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

RSpec:描述,背景,特征,场景?

describe,context,feature,scenario:什么是四间的差异(一个或多个),做当我使用每一个?

rspec rspec2 rspec-rails

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

如何让rspec-2提供与测试失败相关的完整跟踪?

现在,如果我使用我的测试套件rake spec我得到一个错误:

1) SegmentsController GET 'index' should work
   Failure/Error: get 'index'
   undefined method `locale' for #
   # ./spec/controllers/segments_controller_spec.rb:14:
      in `block (3 levels) in '

这是正常的,因为我有一个错误:)

问题是跟踪不是很有帮助.我知道它突破了segments_controller_spec.rb,第14行,但这只是我称之为测试的地方:

### segments_controller_spec.rb:14
get 'index'
Run Code Online (Sandbox Code Playgroud)

我更喜欢实际的断行和完整的跟踪,而不是spec文件夹中的部分.

跑步--trace并没有帮助.

ruby testing rspec rspec2 ruby-on-rails-3

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

如何在不运行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万
查看次数

Object.any_instance should_receive vs expect()接收

以下代码按预期工作:

Object.any_instance.should_receive(:subscribe)
Run Code Online (Sandbox Code Playgroud)

但是当使用新的rspec期望时,它不起作用:

expect(Object.any_instance).to receive(:subscribe)
Run Code Online (Sandbox Code Playgroud)

错误是:

expected: 1 time with any arguments
received: 0 times with any arguments
Run Code Online (Sandbox Code Playgroud)

如何使expect()接收?

rspec rspec2 rspec-rails

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

Rails 3.1,RSpec:测试模型验证

我已经在Rails中使用TDD开始了我的旅程,并且遇到了一个关于模型验证测试的小问题,我似乎无法找到解决方案.假设我有一个用户模型,

class User < ActiveRecord::Base
  validates :username, :presence => true
end
Run Code Online (Sandbox Code Playgroud)

和一个简单的测试

it "should require a username" do
  User.new(:username => "").should_not be_valid
end
Run Code Online (Sandbox Code Playgroud)

这正确地测试了状态验证,但如果我想更具体一点怎么办?例如,在errors对象上测试full_messages.

it "should require a username" do
  user = User.create(:username => "")
  user.errors[:username].should ~= /can't be blank/
end
Run Code Online (Sandbox Code Playgroud)

我对初始尝试的关注(使用should_not be_valid)是RSpec不会产生描述性错误消息.它只是说"预期有效?返回虚假,变为现实".但是,第二个测试示例有一个小缺点:它使用create方法而不是new方法来获取errors对象.

我希望我的测试更具体地说明他们正在测试什么,但同时不必触摸数据库.

有人有任何意见吗?

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

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

Rspec测试redirect_to:返回

你如何redirect_to :back在rspec中测试?

我明白了

ActionController::RedirectBackError:在此操作的请求中设置了
No HTTP_REFERER,因此redirect_to :back无法成功调用.如果这是测试,请确保指定request.env["HTTP_REFERER"].

我如何设置HTTP_REFERER我的测试?

redirect rspec ruby-on-rails rspec2

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

RSpec文档......它隐藏在哪里?

有一个可怕的时间找到RSpec-2(和rspec-rails)文档.具体来说,我想查找所有可用的Matchers ......但是怎么样?

我试过了:

  • RSpec.info:过时 - RSpec 1.x
  • rdoc.info:无论如何对我来说似乎毫无用处.(不完整?)
  • RSpec-Relish:令人困惑.不完整?如何查找Matchers?
  • GitHub Wiki:分散的信息.无组织的.不完整?

是的,我知道The Book ...但是,严肃地说,这不是网上的东西吗?

即使尝试rake doc:plugins但它没有奏效.太绿了,知道为什么......

显然,在rspec.rubyforge.org曾经有过一些不错的1.x文档.但它们似乎早已不复存在......

这些文档隐藏在哪里?

rspec ruby-on-rails rspec2

60
推荐指数
2
解决办法
5648
查看次数

如何在RSpec 2中自动加载spec_helper.rb

在Ruby中开发gem时,我几乎总是需要一个文件,我可以在其中配置RSpec以满足我的需要,也许在此之前,需要一些辅助模块,这些模块应该在我的所有spec示例中都可用.

在Rails应用程序中,使用名为的文件spec/spec_helper.rb.令我恼火的一件事是,在典型的Rails环境中,您必须在每个包含要加载示例的文件中要求此spec_helper.rb文件.在过去,我遇到了很多问题,这些问题与更改示例文件中的加载路径和相对需求路径有关.

现在,对于我的宝石,我希望有一种方法可以在加载任何示例文件之前说RSpec要求spec_helper.rb文件.如果我调用rspec可执行文件,或者我可以在我的Rakefile中定义的rake规范任务,则独立于这个事实.

我知道我只能告诉RSpec我的spec_helper.rb的位置是这个spec_helper.rb手动需要所有的示例文件,但我还想避免额外维护该方法.

有没有更好的方法来实现这一目标?

ruby rspec rspec2

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