Tag: rspec2

如何将实例variables传递给RSpec共享示例

我使用RSpec(2.10.1)在模型上testingvalidation,并提取了一些代码与其他模型validation共享。 validation首先写在公司表上,所以代码如下所示: # support/shared_examples.rb shared_examples "a text field" do |field, fill, length| it "it should be long enough" do @company.send("#{field}=", fill * length) @company.should be_valid end etc… end 用法是: # company_spec.rb describe Company do before { @company = Company.new( init stuff here ) } describe "when address2" do it_behaves_like "a text field", "address2", "a", Company.address2.limit […]

rSpec和Rails3中的stubbingdevise

你将如何在rSpec中存储Rails 3中的Devise。 我有一个UsersController和一个User模型。 这两个都和Devise有关,我正在写控制器的规格,而且我真的很难与我的期望,因为devisesign_in真的干扰了作品。 任何事情都会有帮助。

在Rspec中testingSTDOUT输出

我正在试图为这个声明build立一个规范。 用'puts'很容易, print "'#{@file}' doesn't exist: Create Empty File (y/n)?"

如何testing也定义为辅助方法的ApplicationController方法?

在我的ApplicationController中,我有一个方法定义为辅助方法: helper_method :some_method_here 我如何在RSpec中testingApplicationController? 在testing我的视图/帮助器时,如何包含/调用这个帮助器方法? 我使用RSpec2的Rails3

使用Rails 3.2.11和RSpec发布原始JSON数据

为了确保我的应用程序不易受此漏洞攻击 ,我试图在RSpec中创build一个控制器testing来覆盖它。 为了做到这一点,我需要能够发布原始的JSON,但我似乎没有find办法做到这一点。 在做一些研究的时候,我已经确定至less使用过RAW_POST_DATA标题的方法,但是这似乎不再适用: it "should not be exploitable by using an integer token value" do request.env["CONTENT_TYPE"] = "application/json" request.env["RAW_POST_DATA"] = { token: 0 }.to_json post :reset_password end 当我查看params散列时,token完全没有设置,它只包含{ "controller" => "user", "action" => "reset_password" } 。 在尝试使用XML时,甚至在试图只使用普通的发布数据时,我都会得到相同的结果,在所有情况下,似乎都没有设置这个时间段。 我知道在最近的Rails漏洞中,散列参数的方式发生了变化,但是仍然有办法通过RSpec发布原始数据吗? 我可以以某种方式直接使用Rack::Test::Methods ?

升级到devise3.1 =>重置密码令牌无效

解 由于这个要求,史蒂文·哈曼,我得到了它的工作。 devise_mail_helpers.rb module Features module MailHelpers def last_email ActionMailer::Base.deliveries[0] end # Can be used like: # extract_token_from_email(:reset_password) def extract_token_from_email(token_name) mail_body = last_email.body.to_s mail_body[/#{token_name.to_s}_token=([^"]+)/, 1] end end end 我将文件devise_mail_helpers.rb添加到function规格所在的文件夹中,并编写了这个规范。 require 'devise_mail_helpers.rb' include Features include MailHelpers describe "PasswordResets" do it "emails user when requesting password reset" do user = FactoryGirl.create(:user) visit root_url find("#login_link").click click_link "Forgot your […]

在RSpec-2.11中使用带'expect'的隐式`subject`

使用rspec-2.11中的新expect语法,怎样才能使用隐式subject ? 有没有比明确参考subject更好的方法,如下所示? describe User do it 'is valid' do expect(subject).to be_valid # <<< can `subject` be implicit? end end

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

在Ruby中开发gem的时候,我几乎总是需要一个可以configurationRSpec的文件来满足我的需要,也许在这之前,需要一些辅助模块,这些模块应该在我所有的示例中都可用。 在Rails应用程序中,使用了一个名为spec/spec_helper.rb的文件。 有一件令我恼火的事情是在典型的Rails环境中,你必须在每个包含它的例子的文件中都要求这个spec_helper.rb文件被加载。 在过去,我遇到了很多与更改示例文件中的加载path和相对需求path有关的问题。 现在对于我的gem,我希望有一种方法来说只要说RSpec在加载任何示例文件之前需要spec_helper.rb文件。 独立于事实,如果我打电话rspec可执行文件,或我可以定义在我的Rakefile rake spec任务。 我知道我可以告诉RSpec只有我的spec_helper.rb的位置是这个spec_helper.rb需要手动的所有示例文件,但我也想避免额外的维护方法。 有没有更好的方法来完成这个?

Rspectestingredirect_to:回来

你如何testingredirect_to :back rspec? 我明白了 ActionController::RedirectBackError : 在这个动作的请求中没有设置HTTP_REFERER ,所以redirect_to :back无法成功调用。 如果这是一个testing,请确保指定request.env["HTTP_REFERER"] 。 如何在我的testing中设置HTTP_REFERER ?

RSpec文档…它在哪里隐藏?

有一个可怕的时间findRSpec-2 (和rspec-rails )文档。 具体而言,我想查找所有可用的匹配器…但是如何? 我试过了: RSpec.info :过时 – RSpec 1.x rdoc.info :无论如何,对我来说似乎是无用的。 (不完整?) RSpec-Relish :令人困惑。 不完整? 如何查找可用的Matchers? GitHub Wiki :分散的信息。 无组织的。 不完整? 是的,我知道这本书 …但是,严重的是,这不是在网上? 甚至尝试过rake doc:plugins但没有奏效。 太绿知道为什么… 显然在rspec.rubyforge.org上曾经有一些体面的1.x文档。 但他们似乎早已不复存在 这些文档在哪里隐藏?