给定这段代码: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
我想测试在某些失败的情况下不会在模拟对象上调用任何方法,使用谷歌模拟。所以代码是这样的:automocObj=newMockObj;EXPECT_NO_METHOD_CALL(mocObj);//thisiswhatI'mlockingforautomainObj=newMainObj(mocObj,......andothermocks);//hereIsimulateafailusingtheothermockobjects,andIwanttobesurethenomethodsarecalledonthemockObj 最佳答案
我想测试在某些失败的情况下不会在模拟对象上调用任何方法,使用谷歌模拟。所以代码是这样的:automocObj=newMockObj;EXPECT_NO_METHOD_CALL(mocObj);//thisiswhatI'mlockingforautomainObj=newMainObj(mocObj,......andothermocks);//hereIsimulateafailusingtheothermockobjects,andIwanttobesurethenomethodsarecalledonthemockObj 最佳答案
我对RSpec一直坚持使用基于xUnit的测试框架有点迷茫,但我正在试一试。规范编写方式的嵌套性质让我有些头疼,因为我应该在哪里进行数据库设置/拆卸。根据DatabaseCleaner自述文件:Spec::Runner.configuredo|config|config.before(:suite)doDatabaseCleaner.strategy=:transactionDatabaseCleaner.clean_with(:truncation)endconfig.before(:each)doDatabaseCleaner.startendconfig.after(:each)
这是我当前的users_controller_spec.rb文件require'spec_helper'describeUsersControllerdorender_views...describe"success"dobefore(:each)do@attr={:name=>"NewUser",:email=>"user@example.com",:password=>"foobar",:password_confirmation=>"foobar"}endit"shouldcreateauser"dolambdadopost:create,:user=>@attrend.shou
我想在RSpec中模拟一个数组(在应用程序中它是一个来自外部API的返回对象),但我不知道怎么做。我试过这样模拟它:item=double("item")item.stub(:[]){:return_value}这行得通,但随后我将为数组中的每个值获取:return_value。还有别的办法吗? 最佳答案 我认为您不需要为数组生成测试替身,它们会给您的测试代码增加不必要的复杂性。您可以创建假数组并在以后使用它:items=[:return_value1,:return_value2]如果您需要stub方法并为第一次和后续调用返回不同
所以我在这里使用Rails4制作一个网络应用程序,如果它有帮助,我在Mac上使用MountainLion,使用AptanaStudio3进行开发。我正在尝试创建一个页面来列出我的应用程序的用户并对其进行分页。我正在使用will_paginate和bootstrap-will_paginate来做到这一点。当我在我的数据库上使用示例用户运行rails服务器时,它工作得很好,但是当我使用RSpec和FactoryGirl运行我的测试时,我对需要用户授权的页面的所有测试都不起作用。所以这就是为什么我认为问题出在FactoryGirl上。以前,我的factory.rb看起来像这样,因为它只需要
我有这样的方法defclassNamedefmethod_namesomecoderescuesomecodeanderrormessageendend那么,如何写下rspec来测试救援block..? 最佳答案 如果你想拯救,这意味着你希望一些代码引发某种异常。您可以使用RSpecstubs伪造实现并强制出错。假设执行block包含一个可能引发的方法defmethod_nameother_method_that_may_raiserescue=>e"ERROR:#{e.message}"end在您的规范中将stub挂接到该方法it