我正在尝试将rspec_api_documentation(https://github.com/zipmark/rspec_api_documentation)集成到我的sinatra应用程序中。我遇到了下面的错误。我显然已将错误简化为一个简单的测试,因为我认为一旦我弄清楚配置中的错误,一旦重新集成到我的更大的应用程序中它就会工作。谢谢!在app.rb中:require'rubygems'require'sinatra'get'/index'do"hewoah!"end在spec.rb中:require"rspec_api_documentation"require"rspec_ap
我正在编写一个gem,其中包含开发人员可以扩展的Sinatra应用程序。例如:#gemcode:require'sinatra'moduleMygemclassApplication我也开始使用RSpec。我应该如何配置RSpec来测试此功能? 最佳答案 上面的引用资料都是有用的,但主要是特定于rails的。我发现很难找到一个简单的方法来对模块化Sinatra应用程序进行基本测试,所以我希望这能为其他人解答这个问题。这是一个完全简单的、尽可能小的测试。这可能不是唯一的方法,但它适用于模块化应用程序:require'sinatra'c
我正在编写一个非常依赖屏幕抓取的网站。因为我知道屏幕抓取很容易被破坏,所以我希望以某种方式得到通知,指出存在问题。我认为可行的解决方案是为我想要支持的每个站点编写一个rspec测试。该测试将从每个站点打开一些远程页面,并将它们与我期望从我的爬虫中获得的输出进行比较。我还想在本地缓存的副本上运行相同的测试,这样我就知道我的代码更改是否破坏了抓取工具或者远程站点是否发生了更改。我想以某种方式每天运行一次这些测试,并在出现任何问题时通知我。最终我想把它变成一颗gem,因为它对我来说是一个反复出现的问题。我倾向于进行大量的数据抓取,如果能知道什么时候出现问题就好了。所以我的问题是我对为我的代码
我有一个关于如何使用rspec模拟文件输入的问题。我有该类的以下代码,但不完全知道为什么要模拟文件输入。文件路径是/path/to/the/file我在Google上进行了搜索,结果通常是加载实际文件而不是模拟文件,但实际上我在寻找相反的地方,只模拟文件,而不是使用实际文件。moduleServiceclassSigningdefinitialize(filepath)@config=YAML.load_file(filepath)raise"Missingconfigfile."if@config.nil?enddefsign()…endprivatedefwhich()…enden
所以,我的ruby代码中有一个模块,看起来像这样:moduleMathStuffclassIntegerdefleast_factor#implementationcodeendendend我有一些RSpec测试,我想在其中测试我的Integer#least_factor方法是否按预期工作。为了简单起见,我们会说测试在同一个文件中。测试看起来像这样:describeMathStuffdodescribe'#least_factor'doit'returnstheleastprimefactor'doexpect(50.least_factor).toeq2endendend不幸的是
在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
当我从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
Rspec可以根据测试标签的存在轻松配置设置。例如,如果某些测试需要创建一个平行宇宙(假设您有代码来执行此操作):#some_spec.rbdescribe"inaparalleluniverse",alter_spacetime:truedo#whateverend#spec_helper.rbRSpec.configuredo|config|config.before(:each,:alter_spacetime)do|example|#fancymagichereendend但我想做相反的事情:“在每次测试之前,除非您看到这个标签,否则请执行以下操作...”如何根据某些测试中是否
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
前一段时间我问了“HowtotestobtainingalistoffileswithinadirectoryusingRSpec?”,虽然我得到了一些有用的答案,但我仍然卡住了,因此提出了一个新问题,其中包含有关我正在尝试做的事情的更多细节。我正在编写我的第一个RubyGem。它有一个模块,其中包含一个类方法,该方法返回一个数组,该数组包含指定目录中的非隐藏文件列表。像这样:files=Foo.bar:directory=>'./public'该数组还包含一个表示文件元数据的元素。这实际上是从文件内容生成的哈希值的哈希值,其想法是即使更改单个文件也会更改哈希值。我已经编写了待定的RS