草庐IT

ruby-on-rails - 如何使用 RSpec 测试内存?

我的一个类(class)中有下一个代码:classSettings基本行为:它在第一次调用时创建了一个新记录。它在后续调用中返回相同的结果。它会在每次更新后重置ivar,在后续调用中返回与当前环境关联的第一个(也是唯一的)记录。对于这个方法我有下一个测试:describeSettingsdodescribe".current"doit"getsallsettingsforcurrentenvironment"doexpect(Settings.current).toeq(Settings.where({environment:'test'}).first)endendend我对此感到不

ruby-on-rails - 在 rspec 中 stub 类级别常量

我的类(class)结构如下:classAbcONE_CLASS_LEVEL_CONSTANT_BEING_READ_FROM_DB=GloablAttributeValue.read_from_dbdefsome_method_that_use_above_constant#thisfunctionbehavesdifferentlyfordifferentvaluesofONE_CLASS_LEVEL_CONSTANT_BEING_READ_FROM_DBendend现在我想根据不同的值ONE_CLASS_LEVEL_CONSTANT_BEING_READ_FROM_DB对some

ruby - RSpec:最准确的服务测试类型

使用rspec测试普通ruby​​类(PORO)的最准确测试类型是什么——在我的例子中是服务。通常我会使用:model测试。但只是为了惯用测试:有没有一种方法可以进行比:model类型更薄的rspec测试? 最佳答案 有notypetoapply.只需将其视为PORO并为其编写规范即可。如果你真的想添加一个类型,你可以添加type::service但默认情况下它不会做任何事情。RSpec.describeMyServiceObjectdo#specsend 关于ruby-RSpec:最准

ruby-on-rails - 返回值的 RSpec 序列和从 stub 中引发的错误

我想在引发异常的情况下对HTTParty的前两次调用stub,然后,第三次调用应该返回值。beforedoallow(HTTParty).toreceive(:get).exactly(2).times.with(url).and_raise(HTTParty::Error)allow(HTTParty).toreceive(:get).with(url).and_return('{}')end但一个允许覆盖另一个。如何设置stub以在前几次尝试时引发错误,然后让它返回一个值? 最佳答案 根据thisgithubissue中提供的信

Ruby Rspec 在 Windows 上输出文字转义字符

我正在学习ruby​​onrails教程:http://railstutorial.org/chapters/static-pages#top我准备使用rspec。安装win32consolegem后,它在控制台中输出乱码,我假设它正在输出ansi颜色更改代码:>rspecspec/?[31mF?[0m?[31mF?[0mFinishedin0.34376seconds?[31m2examples,2failures?[0m1)PagesControllerGET'home'shouldbesuccessfulFailure/Error:UnabletofindCtoreadfaile

ruby - RSpec、隐式主题和异常

有没有办法正确测试rspec中隐式主题的异常引发?例如,这失败了:describe'test'dosubject{raise'anexception'}it{shouldraise_exception}end但这过去了:describe'test'doit"shouldraiseanexception"dolambda{raise'anexception'}.shouldraise_exceptionendend这是为什么? 最佳答案 subject接受一个block,该block返回余数的主题。你要的是这个:describe'te

ruby-on-rails - 在 RSpec 测试中跳过 Rails http_basic_authenticate_with

我正在研究MVP(最小可行产品)。为了提供一种更简单的方法来保护管理页面,我只是将http_basic_authenticate_with添加到我的AdminController。问题是当我想测试我的AdminController时,我得到“未授权”(401),因为我没有登录。在这种情况下,测试身份验证是无关紧要的——它只是暂时的,一旦我进入下一个冲刺,它就会被删除——所以我试图在RSpec中跳过它。问题是我尝试了很多方法,但似乎都没有用。例如,我试图修改http_basic_authenticate_with以避免身份验证。像这样:require'spec_helper'module

ruby-on-rails - Rails 教程 3 第 7 章 : User Model Rspec Test Failing

我一直在成功地遵循Rails教程3,直到我到达第7章并实现了用户模型,现在我的rspec一直失败。这是我的user.rb文件输出classUsertrue,:length=>{:maximum=>50}validates:email,:presence=>true,:format=>{:with=>email_regex},:uniqueness=>{:case_sensitive=>false}validates:password,:presence=>true,:confirmation=>true,:length=>{:within=>6..40}before_save:encr

ruby - 如何使用 rspec 模拟模块内的类方法

我正在尝试测试调用外部API的创建方法,但我在模拟外部API请求时遇到了问题。这是我的设置和我到目前为止尝试过的内容:classUpdatedefself.create(properties)update=Update.new(properties)beginmy_file=StoreClient::File.get(properties["id"])update.filename=my_file.filenamerescueupdate.filename=""endupdate.saveendendcontext"Storerequestfails"doit"setsablankfi

ruby-on-rails - 如何在 Rspec 中模拟 CSV foreach 方法

我有一个使用CSV.foreach方法的方法。数据应如下所示:1,0,0,11,1,0,0我想编写一个测试,如果每行中的元素数量不相同,则预计会出现错误。类似于:it"shouldraiseanerrorifinputfilelinessizediffer"doexpect{my_method(invalid_file_name)}.toraise_errorend如何模拟CSV的foreach方法以返回无效输入? 最佳答案 你确实可以stubCSV的foreach方法,但是你需要使用and_yield方法和链接来生成不止一行,即: