草庐IT

ruby - 有没有办法设置$的值?在 Ruby 的模拟中?

我正在测试一些与系统命令交互的脚本。它们的逻辑取决于系统命令的返回码,即$?的值。因此,作为一个简化的示例,脚本可能会说:deffoo(command)output=`#{command}`if$?==0'succeeded'else'failed'endend为了能够正确测试这些方法,我希望能够将内核反引号调用stub,并设置$?到任意值,以查看我是否在反引号调用后从方法中的逻辑中获得适当的行为。$?是一个只读变量,因此以下内容不起作用:$?=some_number我可以做一些简单的事情:例如,设置$?为零或非零。例如,将设置$?到0或35212(无论如何在我的系统上),取决于$?的

ruby - 使用 Rack::Test 和 Sinatra 测试 Controller 实例变量

我有一个Sinatra应用程序,它根据用户是否登录以只读或可编辑的方式提供页面。Controller设置一个变量@can_edit,View使用它来隐藏/显示编辑链接。我如何在测试中测试@can_edit的值?我不知道如何在Rack::Test下获取Controller的当前实例。我使用class_eval来stubController中的logged_in?方法,但我不得不求助于检查last_response.body我的编辑链接以查看是否设置了@can_edit。如何直接测试@can_edit的值? 最佳答案 不幸的是,如果不修

ruby - rspec 中的依赖测试

我编写功能测试,我需要做的测试取决于之前测试的通过情况。假设我有一个按钮可以打开一个窗口,其中有一个功能。也就是说,为了检查此功能,我需要首先检查按钮的正确操作(即打开窗口或不起作用)。所以,我需要这样做,如果单击按钮时测试失败,则测试不会运行以检查功能窗口。单独编写测试-对我来说不是一种选择。我希望看到这样的内容:describe"sometests"doopen_result=nilit"shouldcheckworkbutton"doclick_to_button()open_result=window_opened?open_result.should==trueendifop

ruby - 当通过 Rake 测试运行时,Minitest #setup 和 #teardown 不会被调用

我有一个MiniTest套件。我使用的是基本的Minitest::Unit::TestCase,而不是规范。我在我的TestCase子类中定义了setup和teardown方法。当我像这样运行测试文件时,它们可以完美运行:rubytest/whatever_test.rb。但是当我运行raketest时,setup和teardown没有被调用。我的Rakefile的相关部分是:require'rake/testtask'Rake::TestTask.newdo|t|t.test_files=FileList['test/*_test.rb']t.verbose=trueend为什么在使

ruby - Un-monkey 修补 Ruby 中的类/方法

我正在尝试对我用Ruby编写的一段调用File.open的代码进行单元测试。为了模拟它,我将File.open修改为以下内容:classFiledefself.open(name,&block)ifname.include?("retval")return"0\n"elsereturn"1\n"endendend问题是我正在使用rcov来运行整个过程,因为它使用File.open来编写代码覆盖率信息,它获取的是monkeypatched版本而不是真实版本。我怎样才能取消monkeypatch这个方法以将它恢复到原来的方法?我试过乱用alias,但到目前为止无济于事。

ruby - RSpec 如何 stub 打开?

我一直在尝试stubopen,open-uri版本,但我没有成功。我已尝试执行以下操作,但请求一直在进行:Kernel.should_receive(:open).and_return("Whateverfornow")我也试过OpenURI::OpenRead.should_receive(:open).and_return("Whateverfornow")自从我追踪到那是在OpenURI中发出HTTP请求的地方。提前感谢您的任何建议! 最佳答案 这是我的做法classGatewaydefdo_somethingopen('ht

ruby-on-rails - 如何避免 Rspec 共享示例 'previously defined' 警告?

我正在尝试学习如何使用Rspec的共享示例功能,但在运行测试时收到警告:WARNING:Sharedexamplegroup'requiredattributes'hasbeenpreviouslydefinedat:/Users/me/app/spec/support/shared_examples/required_attributes_spec.rb:1...andyouarenowdefiningitat:/Users/me/app/spec/support/shared_examples/required_attributes_spec.rb:1Thenewdefinitio

ruby-on-rails - before_save 在验证后运行吗?

我的自定义验证似乎在我的before_saveblock之前运行,这对我来说很奇怪。我知道before_validation,但我正在尝试测试我的自定义验证器,所以before_validationHook不允许我这样做。我还读到测试私有(private)方法(我的验证器)是不好的做法。我该怎么办?更多信息:我们希望用户能够上传带有URL或文件的文档,但不能同时上传或不上传(xor)。我的验证器检查这些的异或。如果用户编辑文档,before_saveHook会删除当前的URL或文件。理论上,流程应该是:上传文件验证并保存上传网址before_save、验证、保存但在我的测试中,我收到验

ruby-on-rails - RSpec:如何测试从 Controller 调用私有(private)辅助方法的辅助方法?

这是我所拥有的:从中调用Controller辅助方法(私有(private))的应用程序辅助方法。代码:应用程序助手:defordenar(coluna,titulo=nil)titulo||=coluna.titleizecss_class=(coluna==**coluna_ordenacao**)?"#{**direcao_ordenacao**}":"ordenavel"direcao=(coluna==**coluna_ordenacao**and**direcao_ordenacao**=="asc")?:desc::asclink_totitulo,{:sort=>col

ruby - 为什么我的 RSpec 测试失败,但我的应用程序正常运行?

我刚刚完成chapter10oftheRubyonRailsTutorial,添加编辑/更新、索引和销毁用户的能力。在我的应用程序中似乎一切正常,但是当我运行RSpec时我的许多测试都失败了。我的users_controller_spec设置与书中完全相同,我的应用程序代码也相同。一个问题可能是我使用的是Rails3.1.1而不是他在书中使用的Rails3.0?对于以前的测试来说,这并不是真正的问题,只是偶尔会出现几行不同的代码。我开始后问题开始出现section10.2.1.这是我看到的错误列表,如果您需要更多信息,请告诉我。谢谢!1)UsersControllerGET'index