Tag: 测试

Rails 3.1,rspec,后卫和spork在Windows上真的很慢

我想成为一个更好的测试人员。 设置有这么多问题我不知道它是否值得。 有人可以帮忙吗? 我在Windows机器上运行Rails 3.1,rspec,后卫水豚和spork。 我使用了防护sporkgem。 这是我运行bundle exec guard时得到的 看看“在421.87秒完成”这一行。 这是一次测试! 我看到我收到一个错误,警告spork抱怨没有fork支持(Windows问题),但后来这行“./magazine_slave.rb:22:在’run’”,应该表明magazine_slave运行(Windows运行spork与杂志而不是叉子)。 有任何想法吗? Guard is now watching at ‘c:/Users/Andreas/My Documents/Aptana Studio 3 workspace/maktaba’ ‘awk’ is not recognized as an internal or external command, operable program or batch file. ‘awk’ is not recognized as an internal or external command, operable program or batch file. Starting Spork […]

在rspec特征测试中使用Devise

我写了以下rspec特性测试规范: require “rails_helper” RSpec.describe “Team management”, type: :feature do user_sign_in describe “User creates a new team” do … expect(page).to have_link(“#{team_name}”) end end user_sign_in方法在我的rails_helper.rb定义: ENV[‘RAILS_ENV’] ||= ‘test’ require ‘spec_helper’ require File.expand_path(‘../../config/environment’, __FILE__) require ‘rspec/rails’ require ‘capybara/rails’ … module UserSignInHelpers def user_sign_in before(:each) do @request.env[‘devise.mapping’] = Devise.mappings[:user] @current_user = FactoryGirl.create(:user) @current_user.confirm sign_in :user, @current_user end end end […]

Rails灯具 – 你如何设置外键?

我正在阅读本指南中关于Rails装置的内容(谢谢,trevorturk)。 看来你在Yaml文件中定义了类,它们会自动加载到test数据库中 – 很酷。 但是如果你想指定这个食谱属于那个食谱(或其他什么),你怎么做? 您是否应该在Yaml代码中手动指定cookbook.id和recipe.cookbook_id的值? (只是一个猜测 – 指南没有显示那样的东西。)或者是否有更合适的方式?

按数据属性查找元素

我正在使用RSpec和capybara-webkit改进我的测试,尝试删除所有的css和xpath选择器 find(‘#edit_user > div:nth-child(7) > div > div > button’).click 我正在寻找替代它们的最佳选择。 我打算使用css class的元素,但一些“专业”水豚测试人员说这不是最好的选择。 所以我的问题是:我可以在测试中使用data属性吗? 如果我有一个元素 Update/button> 我能做到吗? find(‘edit.update’).click ? 你觉得这是个好主意吗? 如果您对此主题有更多想法/信息,请随时发表评论!

测试使用ActiveRecord模型的gem

我写了一个gem,如果你传入一个ActiveRecord模型,它会将数据导入你的数据库。 例如: importer = Importer.new(Widget) importer.import(data_source) 有没有一个好方法来测试这个gem? 我会以某种方式需要连接到测试数据库并创建一个测试模型。 谢谢!

Rails JSON API使用JSON中的PARAMS测试POST请求

这是困扰我一段时间的问题。 我正在构建一个API函数,它应该在json中接收数据并在json中接收响应。 我的控制器测试运行正常(因为我抽象数据到达那里已经从JSON解码,只需要解释答案)。 我也知道该函数运行正常,因为我使用curl测试它与JSON参数,它完美地工作。 (例如:curl -i –header“Accept:application / json”–header“Content-Type:application / json”-d'{“test”:{“email”:“andreo@benjamin.dk”}} ‘) 但显然我想编写请求(function)测试来自动测试这个,我看到它应该像curl一样工作,即点击我的服务就像是外部调用。 这意味着我想在JSON中传递参数并得到答案。 我很遗憾,因为所有的例子我都能看到人们对待已经被解码的论点。 我的问题是:我正在遵循一个错误的前提,想要发送参数并请求作为JSON,因为我将测试rails的工作原理,因为这是它的责任吗? 但我想看看我的代码对错误的参数有多强大,并且想尝试使用JSON。 这种类型的东西: it “should return an error if there is no correct email” do params = {:subscription => {:email => “andre”}} post “/magazine_subscriptions”, { ‘HTTP_ACCEPT’ => “application/json”, ‘Content-Type’ => ‘application/json’, ‘RAW_POST_DATA’ => params.to_json } end 你知道这有可能吗? 如果您认为我测试错了,请告诉我。 祝一切顺利, 安德烈

未捕获的投掷:设计测试中的监狱长

我刚刚开始测试Devise。 我无法理解为什么我会收到此错误:: Failure/Error: subject.current_user.should_not be_nil ArgumentError: uncaught throw :warden 这是我的规范中的代码:: require “spec_helper” describe Devise::PasswordsController do include Devise::TestHelpers before(:each) do user = Factory(:user) @request.env[“devise.mapping”] = Devise.mappings[:user] sign_in user end it “should have a current user” do subject.current_user.should_not be_nil end end 有没有人解决这个问题? 我知道github上存在问题,但在他们的情况下include Devise::TestHelpers不存在与我的情况不同。 我在这一行收到错误:: subject.current_user.should_not be_nil

让Rails测试意识到Rails内部链外的Rack中间件

上下文 :应用程序使用必须在config.ru中设置的Rack中间件,而不是Rails的内部中间件链。 这是出于与此问题无关的原因。 问题 :如何让我的测试(function和集成)了解这个中间件? 我将以一个例子说明。 让我们创建一个原始的Rails 3应用程序,使用机架重写进行说明。 # /config/initializers/example.rb Rails.application.middleware.insert 0, ‘Rack::Rewrite’ do r301 ‘/so’, ‘http://stackoverflow.com’ end # /test/integration/the_test.rb require ‘test_helper’ class TheTest < ActionDispatch::IntegrationTest test "redirect from /so to http://stackoverflow.com" do get '/so' assert_redirected_to 'http://stackoverflow.com' end end 如果你运行上面的测试,一切都很好,并且使用浏览器你可以确认访问路径/so会将你重定向到StackOverflow。 很酷,让我们现在在Rails之外设置它。 删除上述文件/config/initializers/example.rb ,并将config.ru更改为以下内容: # /config.ru require ::File.expand_path(‘../config/environment’, __FILE__) map ‘/so’ do run Rack::Rewrite do r301 […]

黄瓜故事的会话变量

我正在为一个“注册”应用程序编写一些Cucumber故事,该应用程序有许多步骤。 而不是写一个Huuuuuuuge故事来同时覆盖所有步骤,这将是不好的 ,我宁愿像普通用户一样在控制器中完成每个动作。 我的问题在于我将在第一步中创建的帐户ID存储为会话变量,因此当访问步骤2,步骤3等时,将加载现有的注册数据。 我知道能够在RSpec规范中访问controller.session[..]但是当我尝试在Cucumber故事中执行此操作时,它失败并出现以下错误(并且,我也读过某个地方这是一个反模式等等…): 使用controller.session [:whatever]或session [:whatever] You have a nil object when you didn’t expect it! The error occurred while evaluating nil.session (NoMethodError) 使用会话(:无论如何) wrong number of arguments (1 for 0) (ArgumentError) 因此,似乎加入会话存储是不可能的。 我想知道的是,是否有可能(我猜哪个会是最好的……): 模拟会话商店等 在控制器和存根中有一个方法(例如, get_registration ,它分配一个实例变量……) 我查看了RSpec书(好吧,浏览过)并浏览了WebRat等,但我还没有真正找到问题的答案…… 为了进一步澄清,注册过程更像是一个状态机 – 例如用户在注册完成之前通过四个步骤前进 – 因此“登录”实际上不是一个选项(它打破了网站工作原理的模型) )… 在我对控制器的规范中,我能够根据会话var加载对方法的调用 – 但是我不确定’antipattern’行是否也适用于存根和模拟? 谢谢!

Rails,Restful Authentication&RSpec – 如何测试需要身份validation的新模型

我使用Bort创建了一个学习应用程序,这是一个包含Restful Authentication和RSpec的基础应用程序。 我已经启动并运行并添加了一个新对象,要求用户在他们可以执行任何操作之前登录(在控制器中为before_filter :login_required )。 [编辑:我还应该提到用户has_many的新类,只有用户应该能够看到它。] 我使用Rspec的生成器创建了新的模型/控制器,这些生成器创建了许多默认测试。 如果没有before_filter那么它们都会通过,但是一旦before_filter到位,它们会失败,正如预期的那样。 如何让生成的测试运行,就好像有/不是登录用户? 我是否需要一整批未登录的匹配 – 重定向测试? 我认为它是某种嘲弄或夹具技术,但我是RSpec的新手,有点漂泊。 良好的RSpec教程链接也将不胜感激。