我正在从事Rails项目,我是Rails的新手,我想使用rspec在模型中测试我的模型关系和方法。我怎么能这样做我的模型关系是这样的classIdea我的idea_spec.rb文件是require'spec_helper'describeIdeadoit"shouldhavetitle"doIdea.new(:title=>'hello',:description=>'some_desc').shouldbe_validendit"shouldhavedescription"doIdea.new(:title=>'hello',:description=>'some_desc').s
我有以下规范来测试Controller方法:context"#create"doit"shouldredirectwhenmodelisvalid"doUser.stub!(:valid?).and_return(true)post:create,:user=>FactoryGirl.attributes_for(:user)response.shouldredirect_to("/")endit"shouldrendernewtemplatewhenmodelisinvalid"doUser.stub!(:valid?).and_return(false)post:create,:u
我是RSpec的新手,所以这是一个非常基本的问题。我正在写一些东西来解析文件中的大量数据,进行一些处理并返回汇总结果,这对Ruby来说非常好。我想围绕这段代码进行一些RSpec测试,但我不想在测试中模拟数据。这些文件又大又复杂,因为我希望代码能够处理这些文件,所以我想在测试中直接处理一些文件。我已经进行了大量的谷歌搜索,但我一直无法找到针对这种情况的最佳实践的任何示例-我找到的所有内容似乎都建议使用模拟数据。所以,明确地说,我想知道针对实际测试数据文件运行RSpec测试的最佳实践,而不是针对测试代码本身中模拟的东西。我非常高兴打开文件、阅读文件等,这不是问题所在。我真正感兴趣的是如何最
下面的代码不起作用,但它最好地展示了我正在努力实现的目标context"thiscontextdescribestheclass"dosubjectdo#describedclassisactuallyamoduleherec=Class.new.extend(described_class)c.some_method_that_has_been_added_through_extensioncend#...testingtheclassitselfhere...context"instancesofthisclass"dosubjectdo#thisdoesn'tworkbecaus
MichaelHartl的rails教程的list6.20显示了以下代码:beforedo@user=User.new(name:"ExampleUser",email:"user@example.com")end...describe"whenemailaddressisalreadytaken"dobeforedouser_with_same_email=@user.dupuser_with_same_email.email=@user.email.upcaseuser_with_same_email.saveendit{should_notbe_valid}end我很难理解这个概
我目前通过以下方式使用记录器:deflog_stufflogger.info{'Infologmessage'}logger.debug{expesive_action}end但我想知道记录器是否通过RSpec接收到正确的消息。如果我只是将日志行传递给输入,这会很简单:#logger.info('Infologmessage')expect(logger_mock).toreceive(:info).with('Infologmessage')但我想不出一种方法可以用block语法做这样的事情。我特别想使用这种语法,以便expensive_action仅在日志级别设置为DEBUG时被调
关闭。这个问题是notreproducibleorwascausedbytypos.它目前不接受答案。这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这个问题的解决方式不太可能帮助future的读者。关闭8年前。Improvethisquestion我正在碰壁,因为我对这个rspec错误消息的含义感到非常困惑。我正在测试一件艺术品是否有成本。以下是我的rspec的片段:let(:valid_art_piece){{date_of_creation:DateTime.parse('2012-3-13'),placement_date_of_sal
我正在使用rails4+rspec3。我想进行HTTP调用,并传递两个参数(例如JSON正文或查询字符串)以及HTTPheader。我能够通过这两个之一,但不能同时通过。当我尝试这样的事情时:postapi_v1_post_path(@myid),{},{"X-Some-Header"=>"MyValue"}它工作正常,标题也很好,但如果我做类似的事情:postapi_v1_post_path(@myid),{"myparam"=>"myvalue"},{"X-Some-Header"=>"MyValue"}我收到以下错误:Failure/Error:postapi_v1_post_p
在rspec中检查接收的旧代码object.should_receive(:message)根据新的rspec语法,我们可以编写这段代码来检查should_recieveallow(object).toreceive(:message)但是我该如何检查这样的东西allow(object).to_notreceive(:message)之前我们是这样检查的object.should_not_receive(:message)#Ineedanewsyntaxwithlatestrspec.我找不到任何文档提前致谢。 最佳答案 你可以这样
我有一个简单的rake任务,里面有一个putsnamespace:atasktasksomething::environmentdoputs'Foo'endend我的规范如下describe'atask:something'dobefore{MyApp.Application.load_tasks}context'one'doitdoRake::Task['atask:something'].invokeendendcontext'two'doitdoRake::Task['atask:something'].invokeendendcontext'three'doitdoRake::