出于某种原因,我的Rspec测试是否在我期望引发异常时失败。我正在运行Rspecv2.14.1,这是一个自定义Ruby应用程序,不是Rails应用程序。示例代码:#test.rbclassTestclassBadError规范文件:#test_spec.rbrequire'spec_helper'require'test'describeTestdoit'raisesanexception'doexpect(raiseTest::BadError).toraise_exception(Test::BadError)endend结果:FFailures:1)Testraisesanexc
所以我有以下内容:foo.eachdo|f|f.begindo_stuffdo_more_stuffendend然后我通过调用and_yield()来模拟f对象。我希望能够通过将原始block{do_stuffdo_more_stuff}传递给begin方法来测试begin方法,而不是模拟实现....我不能只让begin方法在mock上被调用而不至少stub,所以怎么办我愿意? 最佳答案 同样,我发现了一个未记录的功能:allow(thing).toreceive(:foo)do|_,&block|block.callend叹息..
我有一个类:classApiParserdefinitialize..enddefapi_data#returnsanarrayofhasheslikeso:#[{answer:"yes",name:"steveb"age:22,hometown:"chicago",...},#{answer:"unsure",name:"tomz",age:44,hometown:"baltimore",...},#{answer:"no",name:"thebrah",age:nil,hometown:"SF",...},#{...},{...},...]endend该方法返回一个哈希数组。数组的
在我的Ruby应用程序中,我尝试使用RSpec测试一个使用来自Controller的参数调用的模块方法。有问题的模块是用于跟踪分析的EventTracker模块:https://github.com/doorkeeper/event_tracker情况是这样的:在我的Controller中,我调用Controller中的方法,如下所示:classInvestorHomeControllertrack_event方法定义在EventTracker模块中,如下所示:moduleEventTrackermoduleHelperMethodsdeftrack_event(event_name,
我在ruby应用程序(非Rails)中加载依赖项时遇到问题。它的文件夹树项目->bin->lib->modules->file1.rb->file2.rb->spec->file2_spec.rb我的文件是require'file1'moduleFile2end我的规范是require'spec_helper'require_relative'../lib/modules/file2'在错误信息中显示rspec规范/query_util_spec.rb/home/gustavo/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/rubygems/core_
这是一个非常简单的问题,但我找不到任何解决方案。已经3天了。请帮忙。所以我有这个用户Controller.rbdefindex@users=@users.normal.order(:name).pageparams[:page]end所以我在我的users_controller_spec.rb中有这个it"assignallnormalusersto@users"dousers=User.normal.allget:indexexpect(assigns(:users)).toeq(users)end我的代码基于https://www.relishapp.com/rspec/rspec
给定这段代码:expect(exit_code).toeq(0),result我明白expect(exit_code).toeq(0)应该做什么,但我不明白逗号或result变量在做什么。有人可以帮我解释一下吗? 最佳答案 这不是很常见,但是to方法可以接受一个额外的参数,它是在示例失败时显示的消息。看看sourcecode.因此,自定义消息可以提供额外的信息,如何处理失败的规范:expect(exit_code).to(eq(0),"specfailed,becauseexit_codeis0,pleasehandleit")第二
我在Rails中有一个迁移,它向数据库中插入一条记录。类别模型取决于此记录。由于RSpec在每个示例之前清除数据库,因此该记录丢失并且似乎永远不会被创建,因为RSpec似乎没有从迁移中生成数据库。在数据库中创建/重新创建此记录的最佳方法是什么?它会使用before(:all)吗? 最佳答案 并不是RSpec清除了数据库,而是Rails的rake:db:prepare任务将开发数据库的schema(但不是内容)复制到*_test数据库中。是的,您可以使用before(:all),因为事务围绕每个单独的示例进行包装-但一个简单的夹具文件
我有一个小的测试项目,我用它来测试一个更大的项目的水域。我在rails上使用rspec进行测试,但最近研究了Cucumber。它看起来非常好,但我想知道是否有办法让Cucumber运行我的规范测试,或者让rspec(autospec)运行我的Cucumber功能。我四处张望,但尚未找到可靠的结论。谢谢,迈克 最佳答案 我也一直在试验Cucumber。它支持自动测试:AUTOFEATURE=trueautospec连续运行rspec和cucumber测试套件。 关于ruby-on-rail
我对RSpec一直坚持使用基于xUnit的测试框架有点迷茫,但我正在试一试。规范编写方式的嵌套性质让我有些头疼,因为我应该在哪里进行数据库设置/拆卸。根据DatabaseCleaner自述文件:Spec::Runner.configuredo|config|config.before(:suite)doDatabaseCleaner.strategy=:transactionDatabaseCleaner.clean_with(:truncation)endconfig.before(:each)doDatabaseCleaner.startendconfig.after(:each)