Rspec Rails3:在使用Capybara进行测试时,如何使用UTF-8

我使用Rails 3、Capybara 0.4.0和Akephalos(https://github.com/sorentwo/akephalos)SeleniumWebDriver和RSpec2。我使用Ruby1.9 我有以下规格: scenario "Create a new Group course with complex name" do school = School.make! switch_to_subdomain(school) cour

如何缩短RSpec 2中测试失败的回溯?

当我的规格出现错误时,我会收到如下消息: Vendor should reject duplicate names Failure/Error: user_with_duplicate_email.should_not be_valid expected valid? to return false, got true # /home/kevin/.rvm/gems/ruby-1.9.2-p136@rails3tutorial/gems/rspec-expectat

rspec中的测试模型查找器方法

Ruby新手正在努力掌握rspec、rails和Cumber 我不确定为什么会返回以下错误: 1) User can be found by username Failure/Error: user.should_not be_valid NoMethodError: undefined method `valid?' for nil:NilClass # ./spec/models/user_spec.rb:26:in `block (2 levels) in <top

在Rails中,使用Figaro、Zeus和RSpec,如何在运行specs时设置来自Figaro的秘密令牌?

TL;DR:当我运行zeus rspec spec/时,我的Figaro变量没有设置 标题大致解释了这个问题,但我会详细说明 在Rails 4应用程序中,我使用存储特定于环境的配置,例如Rails秘密令牌(Rails.configuration.secret\u key\u base)。这本身就行。我还使用预加载我的Rails配置,这也很有用 然而,当组合并运行我的RSpec规范时(通过zeusrspec规范/),我的Rails秘密令牌被删除。当然,这会输出一个弃用警告,然后出错: DEPRE

RSpec:在实例化之前,如何在对象上存根一个方法,而不必存根所有其余的方法?

我正在为Rails编写一个gem,其中包括一个用于创建模型的生成器。在某些情况下,生成器应该调用自己,并使用generate方法来实现这一点。这在实际使用时效果很好 我正在使用RSpec 3.2和generator_spec来尝试和测试此功能,但作为一个gem,当它到达generate调用时,它会抱怨Rails不存在: /path/to/ruby: No such file or directory -- bin/rails (LoadError) p>所以我一直在尝试生成发电机生成方法,使

Rspec-未初始化的常量轨道(NameError)

我正在尝试在Rails应用程序中使用Rails引擎 rails引擎使用一个名为spin.js的gem 在我的rails应用程序中,我的spec\u helper文件中包含了包含引擎的代码(这是一个gem) 当我运行rspec时,出现以下错误: C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/spinjs-rails-1.4/lib/spinjs -rails/engine.rb:2:in `<module:Spinjs>':

Rspec 期望至少收到一次带有特定参数的

我有一门伐木课。我想测试一下,在函数内部,记录器将收到一个带有foo参数的log调用 expect(Logger).to receive(:log).with("foo") Bar.foo() 然而,在此期间,一些模型回调还将调用Logger.log(“euu”)、Logger.log(“arr”)、Logger.log(“hmm”)和其他许多函数。Rspec似乎失败了,因为首先使用一些其他参数调用了log 我只关心log(“foo”)被调用一次。有没有办法进行这种测试?这种方法是允许调用lo

rspec puppet中的动态值分配

在rspec puppet中是否有为参数动态赋值的选项 下面是我的rspec木偶测试用例示例。现在,我已经硬编码了所有FQDN和主机名详细信息 是否可以动态分配这些值 let :facts do { :fqdn => 'puppet.example.com', :hostname => 'puppet', :ipaddress => 'xxx.yy.ee.zzz' } end it do should contain_host('pup

在Rspec中,如何测试邮件程序是否会引发错误?

给定一个引发异常的简单Rails邮件程序,如何编写一个rspec规范来确认引发了异常 # status_mailer.rb ... def simple_message(addr, subject, msg_text) raise "Foo" end ... 及 给出了结果: expected Exception with "wtf" but nothing was raised 但是,很明显,每当调用mailer方法时,它确实会引发“Foo” (为了解决这个问题,这

chef exec rspec找不到指定的路径

当我试着运行chef exec rspec时,我总是感到 The system cannot find the path specified C:\opscode\chefdk\bin在我的系统路径中。我正在使用Windows7作为我的工作站。我不确定它要寻找哪条路? 我在D:驱动器上安装了chefdk,而不是C:。我最好的猜测是,在某些地方,C:\是硬编码的。chef的大多数综合包都是硬编码到默认安装位置的,以避免与system ruby和其他东西发生冲突 在C:\drive上重新安装che

使用会话sinatra使用Rspec进行测试

我有使用session的sinatra应用程序,如何测试使用session的页面 I使用Rspec+sinatra Tks与所有其他页面一样 你需要澄清你的问题。测试会话有什么问题。如果问题是用户需要登录,则可以在spec文件中使用类似以下内容: before :each do post "/login", {:username => "myuser", :password => "mypass"} end 它将在每次测试之前让您登录。我只能通过禁用测试环境的会话来让它工作。这

如何使用RSpec在CanCan失败的授权上测试响应代码?

我正在从事一个rails项目,其中我使用CanCan来授权我的资源。当用户未登录并尝试提交“对话”(通过ajax表单提交)时,CanCan会正确地发出401,并将其{“status”:“error”,“message”:“您必须登录才能这样做!”作为响应(我已使用firebug在浏览器中验证了这一点)。但是,在我的测试中,得到的是302响应代码,而不是401: class TalksController < ApplicationController authorize_resourc

Rspec Bat文件运行命令后打开文件

所以我有一个创建文件的命令,希望在命令完成后自动打开文件。。。我试过这个: start /b /wait rspec spec --drb --format html --out doc/rspec_out.html echo DONE start doc/rspec_out.html 但是一旦第一个命令完成,第二个命令就不会运行了(我看不到DONE) 我做错了什么 谢谢,如果rspec是一个批处理文件,以下任一项都会有所帮助: 在rspec脚本的末尾(退出点)添加EXIT命令。 像这样运行第

Rspec 为黄瓜定义正确的“夹具路径”

我想从以下步骤附加一个文件: When /^I attach an image/ do page.attach_file("Image", File.join(fixture_path, "green_small.jpg")) end 出于某种原因,这会导致/home/xxx/test/fixtures/green_small.jpg。在某些地方,fixture_路径的默认值是cucumber中的test/fixtures 我使用的是rspec,因此设备的路径应该是spec/fixture

Rspec比较:eq、match、be之间的差异是否应为?

开始对cucumber使用rspec断言,我怀疑哪种方法可以进行字符串比较。我尝试了以下4种方法,它们似乎都产生了相同的结果,所以我想知道其中一种方法是否比其他方法更好 那么,解释这四种方法之间的区别容易吗?也许举个例子 page.first('div#navigation a').text.should == 'Radio') page.first('div#navigation a').text.should eq('Radio') page.first('div#navigation a'

Rspec使用模拟和期望测试从模型的作用域方法进行有序检索

我是rspec的新手,嘲笑和嘲弄。我慢慢地开始理解和理解孤立测试和模拟/存根的概念。我有一个基本问题,我认为通过代码更容易解释: class NewsItem < ActiveRecord::Base ... scope :ordered, order("created_at DESC") ... end 我无法理解如何将上述测试转换为模拟和存根。这是第一次尝试,但显然我误解了一些核心概念 xit "should have an ordered method to retri

stubing File.expand_rspec/rails 4中的路径

我在代码中多次调用File.expand_path(Rails.root) 为了进行测试,我在spec/support中创建了以下配置 RSpec.configure do |config| config.before(:each) do File.stub(:expand_path).and_return("spec/fs") end end 因此,每个对File.expand_路径的请求都返回“spec/fs/,而不是“/home/user/” 当我在rails 3上时,它

Rspec-不一致let行为

有人能给我解释一下吗 describe 'test some stuff' do let (:dude) {"where's my var"} let (:container) do {} end it 'does some stuff' do puts dude container[:dude] = dude puts container end it 'does some other stuff' do puts dude p

Rspec';s未在终端上打印it块文本

我有一个测试项目,其中有多个IT块。一切都很顺利,但是,当我运行rspec测试时,我没有在终端上的it块中获取文本。相反,我在终端上得到的只是绿点 有人能建议如何在我的终端上获得它吗 这是rspec gems版本 *本地宝石* rspec(3.3.0) rspec核心(3.3.1) rspec期望值(3.3.0) rspec模拟(3.3.1) rspec支持(3.3.0)为了简洁起见,只需运行rspec--format=documentation或只运行rspec-fd 您可以使用rspec-

Rspec 包括一个模块,除非期望';s文件是否在某个目录中?

假设我的项目中有四个等级库文件: spec/foo/foo_one_spec.rb spec/foo/foo_two_spec.rb spec/baz/baz_one_spec.rb spec/baz/baz_two_spec.rb 如果当前规范文件不在baz目录中,我如何配置规范文件以包含特定模块 下面是一些伪代码来说明: module Moddy extend RSpec::SharedContext let(:message){ 'hello' } before{

Rspec 如何在spec中模拟函数结果。

我有一个从s3获取文件的方法 def self.fetch_file(file_name) s3 = Aws::S3::Client.new s3.get_object(bucket:'myBucket', key: file_name) end 然后我有一个调用fetch_file方法的方法 def self.import_file(file_name) response = fetch_file(file_name) .. do some staff 我想测试im

Rspec 如何定义操纵木偶目录对象的辅助方法

我有一堆重复的代码来操作Puppet Catalog对象(注意重复的content=行): 可以看到,我已经将一个长查询移动到before(:each)块中,并将其保存在一个实例变量中。这使得它在it块中可用 我不明白的是如何为content=行定义一个方法,比如: def content(file_name) catalogue.resource('file', file_name).send(:parameters)[:content] end 如果我知道如何做到这一点,我可以清理这个

Rspec 在rails中验证模型属性时,我收到了两次错误消息

好心的是,我试图在rails 5中验证模型属性的长度,但是当我在控制台中检查验证时,我收到了两次验证消息。例如,这是模型中的验证代码: validates_length_of :title, minimum: 2, maximum: 100 当我使用rails控制台创建一个标题为nil的新无效记录时 message = Message.create(sender_id: 3) 当我尝试使用:message.errors.details获取错误消息时,我得到 {:title=>[{:er

Rspec 我的env.rb文件中的require出现问题

我正试图从实用程序员网站上学习rspec/cucumber来编写rspec书籍。到目前为止,所有的例子都有效,我认为我做的每件事都是正确的。然而,我不断得到以下错误 cumber功能/codebreaker\u开始游戏。功能 ~ │没有要加载的这样的文件--codebreaker(LoadError) 我知道codebreaker.rb文件就在那里,它有正确的内容。我

从rspec 2.7升级到rspec 2.12的问题

我正在尝试将一个旧的(休眠1年)项目从Rails3.1和RSpec2.7升级到Rails3.2和RSpec2.12 最初升级到Rails3.2的过程很顺利,应用程序也正常工作,但是在Rspec下运行测试产生了很多警告: DEPRECATION WARNING: The InstanceMethods module inside ActiveSupport::Concern will be no longer included automatically. Please define insta

Rspec Capybara Webkit CSS支持

Im目前使用capybara/rspec来测试div是否不可见(display:none),但是如果样式是在CSS文件中定义的,而不是直接在页面中定义的,那么它似乎总是返回true visit "http://#{host}/" page.find('#sort-by').should_not be_visible 这是webkit驱动程序的问题吗?我注意到在#visible?的文档中,他们注意到结果可能非常适合CSS支持 在更高版本的Capybara/webkit中是否有进一步的支持?我们已

Rspec 如果在描述块中调用,为什么Factory Girl会创建副本

我使用Factory Girl和Faker创建独特的测试用户。 用户模型在电子邮件上具有唯一性验证 如果我嵌套两个级别的descripe块,那么一些测试将失败,因为存在重复的电子邮件。 如果我不嵌套描述块,那么所有工厂调用都返回唯一用户,测试通过 为什么Faker在第一个场景中会生成重复的电子邮件 #工厂/user.rb #有骗子的简易工厂 工厂女孩 工厂:学生,班级:用户 first_name{Faker::name.first_name} 姓氏{Faker::name.last_name}

Rspec 失败:用户页面配置文件页面应具有标题;示例用户"; 我遵循Michael Hartl的Rails教程,我在第7章的中间,试图配置用户配置文件。我正在使用Deviate,没有创建一个views/users/new.html.erb页面,而是将其留给Deviate的默认app/views/Deviate/registrations/new.html.erb。但是,对于配置文件页面,我创建了一个views/users/show.html.erb文件,并从我的config/routes.rb文件中的designe默认设置中重新路由,如下所示:get'show/:id'=>'user\show'

我在我的user\u pages\u spec.rb文件上实施了适当的规范测试: require 'spec_helper' describe "User pages" do subject { page } describe "profile page" do let(:user) { FactoryGirl.create(:user) } before { visit user_path(user) } it { sho

Rspec 如何用FactoryGirl替换临时文件?

我正在用rspec测试CSV上传程序,我在/spec/fixtures中保存了一个测试文件,我用fixture\u file\u upload将该文件拉入测试: let(:file) do fixture_file_upload( Rails.root.join("spec/fixtures/chargeback_test.csv"), "text/csv" ) end 这是可行的,但我在每个规范中都有文件路径。我想通过将其放入工厂来干燥我的代码,但我很难让Factor

发布rspec和faiing测试并清除本地存储

我正在测试一个将本地存储用于用户数据的应用程序。在我的场景之后,我使用命令“page.execute_”脚本(“window.localStorage.clear()”)清除本地存储。这是为了在下一个场景中,应用程序的状态处于干净状态,并且没有上一个测试遗留的任何用户数据 当所有测试都通过并且达到最后一步(清除本地存储步骤)时,这种方法可以正常工作。但是,如果我的测试在测试过程中的某个点失败,则不会执行此命令(作为最后一步),这会导致下一个场景出现问题,因为仍有来自上一个失败场景的数据存储 我曾

使用';don';t关心';rspec中可能的语法?

该测试检查由generate_game方法创建的tic-tac趾板是否确实有三个子阵列,每个子阵列有三个值。但是我可以用一行来表达这一点吗,就像我在评论行中尝试的那样 it "should have three rows of three squares each" do # expect([[_,_,_], [_,_,_], [_,_,_]] === generate_game).to_be true game = generate_game expect(g

如何获取rspec存根中块的返回值?

假设我有这个代码: Lollercoaster.lmao { 'this is fun' } 如何测试该块的评估?换句话说,我想做这样的事情: expect(Lollercoaster).to have_received(:lmao).with('this is fun') 但这显然不起作用,因为没有任何论据被发送到lmao方法 这些文档将此作为一个示例: allow(dbl).to receive(:foo) { |&block| block.call(14) } 但当我尝试

Rspec 为什么是Avdi Grimm';s数据库清理器示例不';在rails 4.2.4中现在不能再工作了吗?

我不太确定确切的问题是什么,但是Avdi Grimm建议的database_cleaner用法示例现在似乎不再适用,取而代之的是database_cleaner自述文件中的示例。这两个示例都已将事务装置设置为false 以下是Avdi Grimm的例子: 下面是database_cleaner中显示的工作示例: 唯一不同的是截断策略设置。IIRC第二个将对:js标记的任何非nil/false值使用截断,第一个将仅在:js标记===true时使用截断。即使我将第一个上的:js=>true更改为:j

Rspec 使用remote提交表单时如何编写功能规范:true

我是RSpec的新手,刚刚开始测试一些东西 我有一个带有“remote:true”的表单,我想为此编写一个规范案例 .row .col-md-offset-4.col-md-4.col-sm-offset-3.col-sm-6 = form_for @reading, html: {class: 'form-inline'}, remote: true do |f| #error_box .row .col-md-9 .input-grou

Rspec 使用shell_out进行Chef库测试

我正在为Chef编写自定义资源。该资源用于设置sysctl值。我基本上使用的是Chef sysctl代码,并对其进行了一些限制。我们不信任公司的所有用户:P 我试图将大部分代码放在库帮助器模块中,以便更轻松地测试代码。我不确定这是否是最佳做法。如果这是不好的做法,请告诉我 无论如何,我遇到的问题是尝试测试我的库代码。每当我试图模拟shell_out命令时,总会出现以下错误 1) Sysctl::Helpers.set_sysctl_param Failure/Error: subjec

什么是RSpec和黄瓜

可能重复: 从不同的wiki页面中,我们可以看到: RSpec是Ruby编程语言的行为驱动开发(BDD)框架,灵感来自JBehave Cucumber是一种将纯文本功能描述作为自动测试执行的工具 因此,您可以将Cucumber视为将纯文本转换为可执行测试的工具。这些测试可以写在例如RSpec中 但是RSpec也可以单独使用,因为它本身就是一个BDD框架。规范不是用简单的英语表达,而是用Ruby代码表达。从不同的wiki页面我们可以看到: RSpec是Ruby编程语言的行为驱动开发(BDD

在rspec测试中获取作为字符串提供的url或路径

对于决定侧边栏行为的控制器,我需要调用几个URL;侧边栏将根据其显示的页面更改(a.o) describe SidebarController do before(:each) do @sidebar = SidebarController.new end it 'should return :jobseekers for root_path' do get(root_url) @sidebar.section(root_path).should eq :jo

rspec helper.stub不';行不通

我正在开发Rails 3.1.1、Ruby 1.9.2,并使用Rspec2进行测试。 插入辅助对象不起作用 users\u helper\u spec.rb require 'spec_helper' describe UsersHelper do describe 'test' do before do helper.stub(:val).and_return('this is test') end it 'returns val' do

rspec给出错误Moped::Errors::ConnectionFailure

当我运行测试rspec时,我得到一个错误 1) Nimba::Storages DropboxStorages returns http success Failure/Error: Unable to find matching line from backtrace Moped::Errors::ConnectionFailure: Could not connect to a primary node for replica set <Moped::Cluster node

运行失败的Rspec,它从Gmail发送消息,在RubyMine中工作正常

我在RubyMine中有一些rspec测试,当我从RubyMine接口运行它们时,它们工作得非常完美。 但当我试图从终端运行相同的测试时,它们失败了。 我使用ruby gmail gem通过以下结构发送mail trougth gmail: @gmail.deliver do to current_unread_mail.reply_to subject "Re: " + current_unread_mail.title body reply_b

Rspec 如何生成随机但有效的e164数字进行测试?

我目前正在使用faker的faker::PhoneNumber.cell\u phone,唯一的问题是我有一个非常严格的e164验证,并且生成的一些数字没有通过e164解析。是否有一种优雅的方法可以伪造随机但有效的e164号码?您可以在区域设置中覆盖手机的格式,以匹配您需要的格式。格式不重要,号码的有效性很重要。换句话说,我需要生成一个可以通过e164验证的数字的东西@我也有这个问题!你有什么进展吗?@RyanRomanchuk在Faker中有很多符合特定验证要求的格式示例——这是使用Faker

Rspec:如何重构类似的测试?(举例说明)

我有两个例子,但我觉得里面的大部分代码都是一样的。但是,它们有点不同(记录略有不同,第二个记录中还有一个附加的断言)。我仍然是一个测试新手,所以在我前进的过程中寻找一些提示。我正在测试一个rake任务。这是我的密码: it 'leaves one billing info for each order' do order = FactoryGirl.create(:order) FactoryGirl.create_list(:billing_info, 2, order_id: ord

Rspec 哪里是播种我的测试数据的好地方?

我的测试依赖于数据库数据。我一直在使用工厂在rspec descripe块中使用before语句动态创建数据 我想把它们移到跑步的开始。在继续使用工厂的同时,有没有一种好方法可以做到这一点?是的,有几种方法可以做到这一点。默认情况下,RSpec语法 before do end 与 before :each do end 这意味着在每个规范之前调用before块中的代码 但是,您也可以使用: before :all do #... end 它为定义它的descripe或其别名上下文块运行

如何使用Rspec测试级联删除

对于我的Rails 4应用程序,我想测试删除课程对象是否会删除关联的章节对象 在我的课程模型中,我将关联定义如下: has_many :chapters, dependent: :delete_all 这个很好用。但是,我不知道如何为这个级联删除编写测试 我的Rspec测试如下所示: before do @course = Fabricate(:course) end it "deletes associated chapters" do set_current_admin c

Rspec Rails中的TX不应具有的任何原因都需要\u new:true

关于这个问题: 是否有任何地方不希望启动新的TX?(哪一个不起作用) 如果是这样,这应该是默认值 顺便说一句,这就是使用默认事务策略时,当代码的正常执行路径成功时,具有回滚的rspec测试将失败的原因 这是我的DatabaseCleaner设置。运行轨道4 RSpec.configure do |config| config.add_setting(:seed_tables) config.seed_tables = %w(global_options shoot_types) c

Rspec 如何从环绕钩子向示例传递上下文

我想使用一个around钩子在临时目录存在的情况下运行我的规范,然后清理临时目录 describe FileManipulatingClass do around(:each) do |example| Dir.mktmpdir do |dir| example.run end end subject { described_class.new dir } context "given its help file exists" do l

在Rspec中模拟多个方法,其中第一个方法采用参数

我有一个类,它对另一个对象进行命令调用,我正试图在RSpec中对此进行测试 SendWithUsInviteeMailer.send\u invite(invitee\u id)。deliver 我想这样写: expect(SendWithUsInviteeMailer)。接收消息链(:send\u invite,:deliver)。with(invitee.id) 其中invitee.id作为参数发送给第一个方法。我如何正确地测试它?有没有一种方法可以使用消息链?我可能会存根send\u in

  1    2   3   4   5   6  ... 下一页 最后一页 共 14 页