草庐IT

ruby - 如何使用 rspec 测试屏幕抓取?

我正在编写一个非常依赖屏幕抓取的网站。因为我知道屏幕抓取很容易被破坏,所以我希望以某种方式得到通知,指出存在问题。我认为可行的解决方案是为我想要支持的每个站点编写一个rspec测试。该测试将从每个站点打开一些远程页面,并将它们与我期望从我的爬虫中获得的输出进行比较。我还想在本地缓存的副本上运行相同的测试,这样我就知道我的代码更改是否破坏了抓取工具或者远程站点是否发生了更改。我想以某种方式每天运行一次这些测试,并在出现任何问题时通知我。最终我想把它变成一颗gem,因为它对我来说是一个反复出现的问题。我倾向于进行大量的数据抓取,如果能知道什么时候出现问题就好了。所以我的问题是我对为我的代码

ruby - 模拟文件输入作为 Rspec 上的文件路径

我有一个关于如何使用rspec模拟文件输入的问题。我有该类的以下代码,但不完全知道为什么要模拟文件输入。文件路径是/path/to/the/file我在Google上进行了搜索,结果通常是加载实际文件而不是模拟文件,但实际上我在寻找相反的地方,只模拟文件,而不是使用实际文件。moduleServiceclassSigningdefinitialize(filepath)@config=YAML.load_file(filepath)raise"Missingconfigfile."if@config.nil?enddefsign()…endprivatedefwhich()…enden

ruby-on-rails - 使用 RSpec 测试模块内部的类

所以,我的ruby​​代码中有一个模块,看起来像这样:moduleMathStuffclassIntegerdefleast_factor#implementationcodeendendend我有一些RSpec测试,我想在其中测试我的Integer#least_factor方法是否按预期工作。为了简单起见,我们会说测试在同一个文件中。测试看起来像这样:describeMathStuffdodescribe'#least_factor'doit'returnstheleastprimefactor'doexpect(50.least_factor).toeq2endendend不幸的是

ruby - 启用 `let` 以在 block 传递给 RSpec 共享示例的情况下分配形式参数

在RSpec中,为共享示例提供值的技术之一是使用let定义该示例使用的变量,如thisdocumentation中所述。.目前,传递给形式参数的值优先于let建立的任何值,如下例所示:shared_examples_for"foo"do|x1|specify{puts[x1,x2,x3].inspect}enddescribe""dolet(:x1){3}let(:x2){3}let(:x3){3}it_behaves_like"foo",1dolet(:x1){2}let(:x2){2}endend#=>[1,2,3]我的问题是,是否可能/合理/可取地改变RSpec语义,使得传递的b

ruby-on-rails - RSpec: 未初始化常量 ActiveRecord (NameError)

当我从Rails项目的根目录运行rspec时,出现以下错误:/Users/ysername/code/fsf/app/models/school_application.rb:3:in`':uninitializedconstantActiveRecord(NameError)在我的spec_helper.rb文件中调用require_relative触发这是我的测试:require'spec_helper'describe'#to_xml'doit'returnsthexml-ifiedversionofapayment'doexpect(SchoolApplication.to_x

ruby - 如何跳过特定 Rspec 标签的一些设置?

Rspec可以根据测试标签的存在轻松配置设置。例如,如果某些测试需要创建一个平行宇宙(假设您有代码来执行此操作):#some_spec.rbdescribe"inaparalleluniverse",alter_spacetime:truedo#whateverend#spec_helper.rbRSpec.configuredo|config|config.before(:each,:alter_spacetime)do|example|#fancymagichereendend但我想做相反的事情:“在每次测试之前,除非您看到这个标签,否则请执行以下操作...”如何根据某些测试中是否

ruby - 如何在 RSpec 模拟中使用动态值?

RSpec模拟可以返回多个值。allow(die).toreceive(:roll).and_return(1,2,3)如何返回动态值,例如:allow(clock).toreceive(:time).and_returnTime.now.to_i总是返回第一个值。是否可以让它为每次调用time计算表达式? 最佳答案 只需删除and_return并传入block:allow(clock).toreceive(:time)doTime.now.to_iend 关于ruby-如何在RSpec

ruby - 如何使用 RSpec 模拟/ stub 文件目录及其内容?

前一段时间我问了“HowtotestobtainingalistoffileswithinadirectoryusingRSpec?”,虽然我得到了一些有用的答案,但我仍然卡住了,因此提出了一个新问题,其中包含有关我正在尝试做的事情的更多细节。我正在编写我的第一个RubyGem。它有一个模块,其中包含一个类方法,该方法返回一个数组,该数组包含指定目录中的非隐藏文件列表。像这样:files=Foo.bar:directory=>'./public'该数组还包含一个表示文件元数据的元素。这实际上是从文件内容生成的哈希值的哈希值,其想法是即使更改单个文件也会更改哈希值。我已经编写了待定的RS

ruby-on-rails - 使用 RSpec 2.5 运行 rcov 时跳过 spec/中的文件

当为Rails3应用程序运行rakespec:rcov时,spec/目录中的文件被包含在覆盖率统计中,但我不想他们是。我只想要我的实际应用程序的覆盖率统计信息。在旧版本的RSpec中,可以使用spec/rcov.opts文件中的--exclude"spec/*"行对其进行自定义,但它似乎该文件不再被Rspec2读取。我尝试创建一个.rcov文件,因为spec/spec.opts更改为.rspec,但也没有人阅读。我找到了一些关于如何在定义rake任务时执行此操作的文档,但我宁愿不覆盖提供的rake任务——看起来这一定是其他人也尝试过的事情。如何自定义不包括在覆盖率统计中的文件?作为引用

ruby - 使用 Rspec 进行 gem 测试

我已经编写了一个自定义RubyGem来连接到我们公司的身份验证和授权系统,并开始为该gem开发单元测试。在我们的Rails应用程序中,可以通过environment.rb和包含配置值的自定义初始化程序和yaml文件来配置Gem。我需要在rails中翻译Gem的配置来测试独立的Gem。我如何将其转换为Rspec以执行集成测试??rails中的Gem配置#environment.rbMyGem.configuredo|config|config.url=MY_CONFIG['url']config.application_name=MY_CONFIG['app_name']config.a