Tag: rspec

Spork:如何刷新validation和其他代码?

我整天都在使用spork,大部分时间它都非常棒。 但是,我经常遇到一些问题,我需要重新启动Spork以便我的测试通过……现在我想知道它是否比它的价值更麻烦。 我是ruby的新手,所以有时我无法预测错误是由于刷新问题,还是因为我不熟悉Ruby和Rails而导致错误。 我需要将什么内容放入Spork.each_run块以便我的validation和其他内容刷新,以便我不必重新启动spork服务器? 谢谢

如何使用rspec,rails和simplecov获取视图规范的覆盖范围?

我有一个项目,其中我使用rails 3.2.3,rspec 2.9.0和simplecov 0.6.1,似乎都是最新的gem。 我正在为我的控制器和模型获得代码覆盖率结果,但不是我的观点。 我尝试在simplecov设置中添加组: SimpleCov.start ‘rails’ do add_group ‘Views’, ‘app/views’ end 甚至明确说我想要.erb文件包括: SimpleCov.start ‘rails’ do add_group ‘Views’, ‘app/views/*/*.erb’ end ……但没有骰子。 “视图”组在我的覆盖结果中,但没有列出那里的文件。 有没有人得到这个工作?

在发出请求之前,Rspec 2.7访问控制器会话

我正在使用Rspec测试我的控制器,在向路径发出请求之前,我似乎无法设置当前控制器的会话变量。 例如,这有效: describe “GET /controller/path” do it “if not matching CRSF should display message” do get controller_path request.session[:state] = “12334” end end 这不起作用(我得到一个错误,说session不是Nil类的方法): describe “GET /controller/path” do it “if not matching CRSF should display message” do request.session[:state] = “12334” get controller_path end end 有任何想法吗?

RSpec设置会话对象

我正在尝试从我的控制器规范中设置会话对象。 it ‘use invalid coupon’ do session[:coupon] = ‘abcd’ Service.any_instance.stub(:validate_coupon).with(session[:coupon]).and_return(‘abcd’) get :index expect(flash[:coupon__notice]).to be nil end 但是当我检查会话而不是@coupon对象时,我得到一个包含字符串’coupon’的@data,并且测试失败。

使用Rspec测试ActiveModel :: Serializer类

给定以下ActiveModel::Serializer类: class SampleSerializer < ActiveModel::Serializer attributes :id, :name end 如何使用RSpec进行测试?

显示每个rspec示例的运行时

目前我正在运行超过1k的例子,这需要很长时间才能完成(超过20分钟!!! )。 我想确定哪些示例需要花费更多时间才能完成,有没有办法运行rspec并返回每个示例完成(单独)所需的时间? 我正在使用rspec 1.3.0和rspec-rails 1.2.3

在RSpec 3请求中设置标头

我正在尝试为需要身份validation的某些RSpec请求设置标头。 标题是ACCESS_TOKEN 。 无论我如何设置标头,它都永远不会被设置。 我知道应用程序有效,因为我可以手动测试它,我只是不能让rspec测试工作。 请在此处查看此问题的完整源代码和测试: https : //github.com/lightswitch05/rspec-set-header-example 由于在我的大多数请求规范中都使用了身份validation,因此我创建了支持帮助程序模块来检索访问令牌并将其设置在标头中。 下面是我如何设置标题的摘要,看看我在完整源代码中尝试过的所有内容 # my_app/spec/support/session_helper.rb module SessionHelper def retrieve_access_token post api_v1_session_path({email: ‘test@example.com’, password: ‘poor_password’}) expect(response.response_code).to eq 201 expect(response.body).to match(/”access_token”:”.{20}”/) parsed = JSON(response.body) token = parsed[‘access_token’][‘access_token’] @request.headers[‘HTTP_ACCESS_TOKEN’] = token end end 使用此帮助程序的示例请求规范应该可以工作,但始终会失败,因为标头永远不会被设置: # my_app/spec/requests/posts_spec.rb # … context “create” do it “creates a post” do retrieve_access_token post = FactoryGirl.build(:post) […]

在Windows上使用Guard和rspec更改文件时,测试不会运行

我已经安装了guard-rspec gem用于我的rails应用程序。 当我通过bundle exec guard从命令行启动后,它第一次运行我的整个测试套件没有问题。 但是,每当我对我的Guardfile中指定的spec文件或任何监视文件进行任何更改时,Guard似乎都不会识别这些更改,也不会重新运行任何测试。 我甚至尝试在我的Guardfile中放置一些显式内容,如下所示: watch(“app/views/orders/new.html.erb”) { “spec/requests/orders_spec.rb” } 当我编辑并保存new.html.erb时,应该触发我的orders_spec.rb测试运行吗? 好吧,当我编辑它并点击保存时,没有任何反应,甚至没有错误或警告。 有没有人有幸在Windows上运行Guard或遇到类似的问题?

Rails和RSpec – 测试关注类方法

我有以下(简化)Rails关注: module HasTerms extend ActiveSupport::Concern module ClassMethods def optional_agreement # Attributes #—————————————————————————- attr_accessible :agrees_to_terms end def required_agreement # Attributes #—————————————————————————- attr_accessible :agrees_to_terms # Validations #—————————————————————————- validates :agrees_to_terms, :acceptance => true, :allow_nil => :false, :on => :create end end end 我无法想出在RSpec中测试这个模块的好方法 – 如果我只创建一个虚拟类,当我尝试检查validation是否正常时,我会收到活动记录错误。 还有其他人遇到过这个问题吗?

我应该在哪里存储方法,以使它们可用于我的应用程序和RSpec?

我需要创建一些可用于我的应用程序(模型,视图和控制器)和RSpec的方法。 具体来说,我需要创建一些包含关键逻辑的path_helper方法。 我需要将它们提供给RSpec,以便我可以运行如下测试: controller.should redirect_to my_custom_path_helper(@object) 我认为他们应该去/lib中的某个地方然而我不知道如何构建它(mixin模块 – 如果是这样我应该将模块混合到哪里?)。 如果我可以从RSpec访问应用程序助手,那么另一种选择就是。 编辑:请注意 这不是关于测试辅助方法的问题 ,而是关于使应用程序和RSpec都可以访问它们。 我需要这样做,因为我需要围绕我的rails path_helpers的包装器逻辑,当我在RSpec中测试should redirect_to .._path .._ path时我不想复制那些路径助手的逻辑。