Tag: rspec

capybara:post,在将请求名称的目录更改为function时获取方法不起作用

升级到Capybara的最新版本后,我的所有访问方法都停止了工作,所以我按照一些人提出的解决方案将请求spec目录重命名为“features”。 现在我的访问方法再次起作用,但请求规范中的任何get或post方法都会导致此错误: undefined method `get’ for # 这是触发错误的代码: describe “getting posts” do before { get(forum_posts_path) } it “should respond with a 200” do response.response_code.should == 200 end end 对此有何解决方法?

rspecvalidation失败

我有一个meeting.rb和user.rb模型 meeting.rb class Meeting < ActiveRecord::Base attr_accessible :intro, :proposed_date, :proposed_location validates :requestor_id, presence: true validates :requestee_id, presence: true belongs_to :requestor, class_name: "User" belongs_to :requestee, class_name: "User" end user.rb class User “requestor_id”, :class_name => “Meeting” has_many :received_meetings, :foreign_key => “requestee_id”, :class_name => “Meeting” 我无法弄清楚如何防止我的meeting_spec.rbvalidation失败。 出于某种原因,我的sent_meetings或requested_meetings(类会议)没有链接到他们各自的请求者或被请求者(类用户)(最后两个代码块,“当requestor_id不存在时”,“当requestee_id不存在时”)。 meeting_spec.rb require ‘spec_helper’ describe Meeting do let(:requestee) { FactoryGirl.create(:user) } let(:requestor) […]

用于测试DELETE请求的Rspec类似代码给出了不同的结果

继迈克尔哈特尔关于Ruby on Rails的书之后,我似乎无法理解为什么其中一个测试通过而另一个测试失败,考虑到它们大致相同。 这源于在练习9.6-9中测试UsersController#destroy 。 这是我的spec/requests/user_pages_spec.rb : require ‘spec_helper’ describe “User pages” do subject { page } describe “index” do let(:user){ FactoryGirl.create(:user) } #before/after ALL TESTS, not USERS before(:all){ 30.times {FactoryGirl.create(:user) }} after(:all) {User.delete_all} #before EACH TEST, no user before(:each) do valid_signin user visit users_path end describe “delete links” do it { should_not have_link(‘delete’) } […]

测试此post模型的草稿属性(Rspec + Capybara)

我想用Rspec和Capybara写一个测试。 我有一个Post模型,我想为它添加一个draft属性。 如果用户检查该字段,则将post保存为草稿( draft = true )。 只有属性draft = false的post才会显示在post索引页面中。 draft = truepost只会显示在创建该post的用户的页面中。 在我的生命中,我从未做过Rspec + Capybara测试。 所以我想知道是否有人可以告诉我如何开始或给我一个例子。 提前致谢! schema.rb: create_table “posts”, :force => true do |t| t.string “title” t.string “content” t.integer “user_id” t.datetime “created_at”, :null => false t.datetime “updated_at”, :null => false t.integer “comments_count”, :default => 0, :null => false t.datetime “published_at” t.boolean “draft”, :default […]

我如何使用rspec来测试Ajax请求?

我试图在rspec中测试一个ajax请求,但我不太确定如何在这一点上做它无关紧要,如果它是rspec或capybara,我只是想让测试通过,任何建议都非常感谢 describe “Cart”, js: true, search: true do let(:product) { create(:product) } let(:variant) { create(:variant, :product => product, :count_on_hand => 1, :sku=>”YIG01276″) } let(:flash_sale) { create(:flash_sale) } let(:user) { create(:user) } before do flash_sale.variants < 0 end end

如何根据指定的日期范围编写rspec来过滤post

我有一个简单的博客应用程序,用户可以根据日期范围(start_date和end_date)过滤post。我使用AJAX调用在索引页面中显示post。 一旦用户使用两个日期选择器给出日期范围并单击提交按钮,就会进行AJAX调用并显示已过滤的post。开发方面没有问题但是在测试的情况下我不知道如何进一步。但我的目标是检查天气,索引页面中显示的post是否在指定的日期范围内。 我已经包含了post控制器中定义的datefilter操作: def dateFilter if (params[:start_date].present? )&& (params[:end_date].present?) if Time.parse(params[:start_date])<=Time.parse(params[:end_date])&& (Time.parse(params[:start_date])<= Date.today)&& (Time.parse(params[:end_date])<= Date.today) @start_date= params[:start_date].to_date.beginning_of_day @end_date=params[:end_date].to_date.end_of_day else @error = true end else @start_date= Date.yesterday.beginning_of_day @end_date=Date.today.end_of_day end @posts= Post.date_filter(@start_date,@end_date) end 在索引页面中,我使用了datepicker,如下所示: ‘posts’, :action => ‘dateFilter’},remote: true) do %> 当进行AJAX调用时,它将post呈现为js文件datefilter.js.erb alert(“enter correct date format”); alert(“No posts in the given date”); $(‘.post_div’).html(”) $(‘#page’).hide() 帮助我为上述场景编写rspec

rspec + capybara undefined局部变量或方法

#gemfile … gem ‘rspec-rails’ gem ‘capybara’ 我根据官方文档在spec_helper.rb中添加了’require’capybara / rails’。 我已经生成了一个测试: $rails generate integration_test authentication_pages 我写了一个测试: #spec/features/authentication_pages_spec.rb describe “Authentication” do subject { page } describe “signin” do before { visit new_user_session_path } describe “with invalid information” do before { click_button “Sign in” } it { should have_title(‘Sign in’) } end end end 运行测试我有一个错误: $rspec spec/features/authentication_pages_spec.rb F […]

Rspec无法加载错误

运行这个(bundle exec rspec spec / requests / static_pages_spec.rb)昨天工作正常,但今天当我回到我的环境(Aptana)时,我收到以下错误: /Users/sa/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.10.1/lib/rspec/core/configuration.rb:746:in `load’: c annot load such file — /Users/sa/Documents/AptanaWorkspace/receiver/spec/spec/requests/static_pages_spec .rb (LoadError) from /Users/sa/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.10.1/lib/rspec/core/configuration.rb:746 :in `block in load_spec_files’ from /Users/sa/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.10.1/lib/rspec/core/configuration.rb:746 :in `map’ from /Users/sa/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.10.1/lib/rspec/core/configuration.rb:746 :in `load_spec_files’ from /Users/sa/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.10.1/lib/rspec/core/command_line.rb:22:i n `run’ from /Users/sa/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.10.1/lib/rspec/core/runner.rb:69:in `run ‘ from /Users/sa/.rvm/gems/ruby-1.9.3-p0/gems/rspec-core-2.10.1/lib/rspec/core/runner.rb:10:in `blo ck in autorun’ 因为我检查了所有引用并且我试图从我的应用程序的根目录运行它,我感到难过。 非常感谢所有的帮助。 谢谢。

NoMethodError:在rails控制台中运行capybara测试时未定义的方法`color_enabled =’

NoMethodError: undefined method `color_enabled=’ for # from /Users/apple/.rvm/gems/ruby-2.0.0-p247@global/gems/rspec-console-0.2.7/lib/rspec-console/config_cache.rb:69:in `method_missing’ 我不知道怎么解决它〜 有什么建议吗? THX〜

测试交互请求序列

最佳实践是不使用@instance变量并使用let(:object) 。 但是如何编写调用序列的测试,其中每个步骤都需要先前的状态而不是干净的状态。 我想写这样的代码: describe “intearction” do let(:user1) { … } let(:user2) { … } it “request” do get “/api/v1/request”, {user2}, token(user1) expect(…).to … end it “confirm” do get “/api/v1/confirm”, {user1}, token(user2) expect(…).to … end end 但那不行。 它可能只是这样工作: describe “intearction” do let(:user1) { … } let(:user2) { … } it “all tests” do # request […]