Tag: rspec

个别规格在单独运行时通过,但在运行所有规格时失败

我的foo_controller_spec.rb中有30个规格,当我使用spec运行整个文件时,我得到4个失败,2个待定。 当我单独运行4个失败的规格时,其中3个仍然失败,但其中一个通过。 起初我认为这是一个数据库问题,在运行之间没有正确清理数据。 所以我安装了database_cleaner( http://github.com/bmabey/database_cleaner )并将此代码添加到我的spec_helper: config.before(:suite) do DatabaseCleaner.strategy = :truncation DatabaseCleaner.clean_with(:truncation) end config.before(:each) do DatabaseCleaner.start Sham.reset login end config.after(:each) do DatabaseCleaner.clean end 现在,当我运行我的规格时,我可以看到每个规格之间的表被截断,所以我知道它正在工作,但是当运行所有其他规格时规范仍然失败但是当单独运行时传递。 我在这里想念的是什么?

用rspec测试lib文件夹的正确方法?

我有一个测试,试图测试位于lib文件夹中的类。 现在我在parser_spec.rb中执行此操作 require ‘spec_helper’ require ‘parser’ –> Because my class is /lib/parser.rb describe “parser” do it “needs a url to initialize” do expect { Parser.new }.to raise_error(ArgumentError) end end 包含所有lib文件的正确方法是什么,以便它们在rspec测试的范围内?

使用RSpec测试searchkick

我想在我的练习管理应用程序中创建用于搜索患者的function规范。 到目前为止,我已经在网上搜索并遵循以下建议的解决方案: http://bitsandbit.es/post/11295134047/unit-testing-with-tire-and-elastic-search#disqus_thread 和 https://github.com/karmi/tire/wiki/Integration-Testing-Rails-Models-with-Tire 这两篇文章都建议为ElasticSearch和Tire配置spec_helper.rb。 由于Searchkick基于Tire,我将解决方案应用于Patient类,这是我使用Searchkick的唯一模型。 但是,我得到每个配置的’NoMEthodError’。 例如,使用以下代码: spec_helper.rb RSpec.configure do |config| do . . . config.before :each do Patient.index.delete Patient.create_elasticsearch_index end config.before :all do Patient.index_name(‘test’ + Patient.model_name.plural) end end 我收到以下错误: Failure/Error: Unable to find matching line from backtrace NoMethodError: undefined method `index_name’ 方法’index’和’create_elasticsearch_index’也是如此 我对RoR很新,老实说我不确定我在这里做错了什么,除了假设我可以在Searchkick上使用Tire解决方案。 所以任何帮助都非常感谢!

fixture_file_upload有{file}不存在错误

下面是我上传文件的测试代码。 describe “file process” do before(:each) do # debugger @file = fixture_file_upload(‘test.csv’, ‘text/csv’) end it “should be able to upload file” do post :upload_csv, :upload => @file response.should be_success end end 但是,当我运行rspec规范时 ,它产生了下面的错误 Failure/Error: @file = fixture_file_upload(‘test.csv’, ‘text/csv’) RuntimeError: test.csv file does not exist # ./spec/controllers/quotation_controller_spec.rb:29:in `block (3 levels) in ‘ 我搜索了很多地方,但我仍然无法找出背后的原因。 任何的想法?

使用JRuby加快RSpec速度

我对整个JRuby世界都很陌生。 我在一个非常大的测试套件上使用RSpec。 我希望能够经常运行规范,但JVM需要很长时间才能启动它,这将成为一个真正的时间流失。 有没有办法让JVM保持运行? 或者通过JRuby让规格更快地运行的方法?

通过RSpec发送自定义标头

鉴于我的API消费者需要发送客户HTTP标头,如下所示: # curl -H ‘X-SomeHeader: 123’ http://127.0.0.1:3000/api/api_call.json 然后我可以在before_filter方法中读取此标头,如下所示: # app/controllers/api_controller.rb class ApiController < ApplicationController before_filter :log_request private def log_request logger.debug "Header: #{request.env['HTTP_X_SOMEHEADER']}" … end end 到目前为止很棒。 现在我想使用RSpec测试这个,因为行为有变化: # spec/controllers/api_controller_spec.rb describe ApiController do it “should process the header” do @request.env[‘HTTP_X_SOMEHEADER’] = ‘123’ get :api_call … end end 但是,在ApiController中收到的request将无法找到标头变量。 使用HTTP_ACCEPT_LANGUAGE标头尝试same code时,它将起作用。 自定义标头是否在某处过滤? PS:网络上的一些示例使用request而不是@request 。 虽然我不确定当前Rails 3.2 / […]

DHH对unit testing:RSpec确实是不必要的复杂吗?

我碰巧是Ruby Inside的订阅者,因为我对Rails特别感兴趣。 昨天,Rails的创建者David Heinemeier Hansson几乎说他只是使用测试/单元。 我会理解,因为它是Rails内部,但他似乎给出了强烈的意见。 他认为RSpec和Cucumber是不必要的复杂。 我通常不会太注意,但这取决于谁说了什么。 我很尊重汉森,他的意见让我思考。 当我开始使用Rails时,我从未真正研究过测试/单元。 只是RSpec和黄瓜。 这就是我想要你的洞察力的原因。 您认为RSpec确实很复杂吗? 写测试/单元花费的时间和精力更少吗?

如何从Rails中的RSpec测试中调用app helper方法?

标题是自我解释的。 我尝试过的所有东西都导致了“未定义的方法”。 为了澄清,我不是试图测试辅助方法。 我试图在集成测试中使用辅助方法。

检查RSpec中的ActiveRecord关联

我正在学习如何使用Rspec编写测试用例。 我有一个简单的post评论脚手架,其中一个post可以有很多评论。 我正在使用Rspec进行测试。 我应该如何检查Post :has_many :comments 。 我应该将Post.comments方法存根,然后通过返回注释对象数组的模拟对象来检查它吗? 真的需要测试AR协会吗?

没有黄瓜的Rspec集成测试?

有没有办法在不使用Cucumber的情况下使用Rspec进行集成测试? 我更喜欢使用普通的旧Webrat。 谢谢。