Tag: rspec

“rake spec”每次都会迁移数据库

当我通过rake运行任何rspec任务时,数据库似乎被删除并迁移,但如果我通过script / spec path / to / spec运行它们,它就不会。 我可以设置一个选项,以便rake规范不会触及数据库吗?

RSpec>有没有办法用一个命令运行所有测试?

有没有这样做的命令? 我搜索过但找不到任何东西

理解Rails 3的respond_with

利用ActionController的新的respond_with方法……当action(保存)成功时以及何时不成功时,它如何确定要呈现的内容? 我问,因为我试图获得一个脚手架生成的规范(包括在下面),如果只是为了让我能理解它。 该应用程序工作正常,但奇怪的是,当validation失败时,它似乎是渲染/carriers (至少是浏览器的URL所说的)。 然而,规范期待”new” (我也是如此),而是接收 。 如果我将规格改为期望””它仍然失败。 当它呈现/carriers ,该页面会显示错误validation字段旁边的错误消息。 任何熟悉respond_with人都可以看到这里发生了什么吗? #carrier.rb validates :name, :presence => true #carriers_controller.rb class CarriersController < ApplicationController respond_to :html, :json … def new respond_with(@carrier = Carrier.new) end def create @carrier = Carrier.new(params[:carrier]) flash[:success] = 'Carrier was successfully created.' if @carrier.save respond_with(@carrier) end 规格失败: #carriers_controller_spec.rb require ‘spec_helper’ describe CarriersController do def […]

未定义的方法`save’使测试在测试结束前失败

我关注ruby.railstutorial.org。 我遇到了一些麻烦,但我解决了。 然而,现在,我正在谷歌搜索相当一段时间,检查代码,我甚至知道为什么测试失败,但不知道如何使它通过。 所以,这就是问题所在。 我有一个用户模型: class User < ActiveRecord::Base attr_accessible :email, :name validates :name, presence: true, length: {maximum: 50 } VALID_EMAIL_REGEX = /\A[\w+\-.]+@[az\d\-.]+\.[az]+\z/i validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }, uniqueness: { case_sensitive: false } end 该问题与不区分大小写的唯一性检查有关。 Rspec的测试是: before { @user = User.new(name: “Example User”, email: “user@example.com”) } subject { @user } describe […]

黄瓜与RSpec

我想开始潜入BDD。 我之前从未使用过TDD,也不确定我是否应该从学习RSpec开始,然后跳到Cucumber或者直接使用Cucumber。 我一直在互联网上阅读这两本书,在我看来,黄瓜可能是RSpec的“替代品”。 我是对的还是应该用于某些事情而另一个用于其他事物?

RSpec测试破坏方法(Rails Tutorial 3.2 Ch.9,Ex.10)

注意:我已经阅读了这个问题和答案,但由于某种原因,代码对我不起作用。 (见下面我得到的错误) Rails教程第9章练习10要求您:修改[针对用户]的销毁操作,以防止管理员用户破坏自己。 (先写一个测试。) 这里棘手的部分是测试它,因为应用程序已经为当前用户隐藏了“删除”链接,因此您必须直接执行http请求。 我让代码工作,并通过删除隐藏当前用户的删除链接的代码来测试它。 果然,如果我点击当前登录用户的删除链接,它会重定向我并给我通知消息。 来自users_controller.rb def destroy @user = User.find(params[:id]) if current_user?(@user) redirect_to users_path, notice: “You can’t destroy yourself.” else @user.destroy flash[:success] = “User destroyed.” redirect_to users_path end end 我遇到的问题是在编写测​​试时会发送删除请求并调用destroy方法。 我试过Rspec测试的解决方案, 如果没有删除链接 ,我将在这里复制: 来自user_pages_spec.rb describe “destroy” do let(:admin) { FactoryGirl.create(:admin) } it “should not allow the admin to delete herself” do sign_in […]

使用rspec进行ActionMailer测试

我正在开发一个涉及发送/接收电子邮件的Rails 4应用程序 。 例如,我在用户注册,用户评论和应用程序中的其他事件期间发送电子邮件。 我使用动作mailer创建了所有电子邮件,我使用了rspec和shoulda进行测试。 我需要测试邮件是否正确收到了正确的用户。 我不知道如何测试这种行为。 请告诉我如何使用shoulda和rspec测试ActionMailer 。

Rspec错误:Sign_in方法模型中#<RSpec的未定义局部变量或方法`cookies'

我的app中没有使用任何gem进行身份validation…所以我的sign_in方法看起来像这样 def sign_in(user) remember_token = User.new_remember_token cookies[:remember_token] = remember_token user.update_attribute(:remember_token, User.encrypt(remember_token)) self.current_user = user end 我在app / helpers / session_helper.rb和spec / support / helpers / session_module.rb下都有这个我需要在我的模型规范中调用sign_in(user)…我得到错误未定义的局部变量或方法` cookies’for

如何制作has_many:通过与灯具的关联?

我不能使用factory_girl因为我正在测试太阳黑子,需要真正的数据库。 编辑 :不。 它可以与太阳黑子一起使用。 我错了。 如何在灯具中构建has_many:through(又名多对多)关联? 我谷歌并得到一个无效的解决方案 编辑 : 最后我使用factory_girl。 我google-copy-paste一个片段: factory :tagging do question { |a| a.association(:question) } tag { |a| a.association(:tag) } end (问题has_many标签通过标签,反之亦然) 它运作良好。 但它是什么? factory_girl的自述文件并不意味着这种语法。 有人能解释一下吗

Rails pages_controller_spec.rb测试不应该失败,但是,错误?

在Mac OS X 10.7上一直关注Michael Hart rails 3.0版的Rails教程 $ rspec spec / ……FF Failures: 1) PagesController GET ‘help’ should be successful Failure/Error: get ‘help’ ActionController::RoutingError: No route matches {:controller=>”pages”, :action=>”help”} # ./spec/controllers/pages_controller_spec.rb:45:in `block (3 levels) in ‘ 2) PagesController GET ‘help’ should have the right title Failure/Error: get ‘help’ ActionController::RoutingError: No route matches {:controller=>”pages”, :action=>”help”} # […]