草庐IT

区块链测试(二):区块链测试

全部标签

ruby-on-rails - rails/minitest 不为选择的测试加载 fixture

我的测试是使用固定装置编写的,我正在慢慢重构它们以使用工厂。一旦我重构了一个测试类以不使用固定装置,我就不想为该类加载固定装置。有没有办法做到这一点?或者我是否坚持要么为所有内容加载它们,要么什么都不加载?对于上下文,这是我现在的灯具设置方式:classActiveSupport::TestCaseRake::Task["db:fixtures:load"].execute...end 最佳答案 将fixtures放入test/fixtures/users.yml然后您可以将它们包含在您需要的地方,例如spec_helper#spe

ruby-on-rails - Ruby on Rails 和 Twitter OAuth 的测试策略

我正在开发一个利用twitteroauth的应用程序,但在试图弄清楚如何测试twitteroauth时遇到了障碍。特别是尝试使用Cucumber和Webrat/Selenium来测试功能——注册/登录过程中的某些步骤在用户是否授予对应用程序的oauth访问权限等方面表现不同。有没有人在他们的RubyonRailsCucumber功能(或与此相关的任何其他测试框架)中成功模拟或stub部分或全部TwitterOAuth系统?任何帮助将不胜感激。 最佳答案 OP已经一年多了,但我最近发现这篇关于使用TwitterAuth和Cucumbe

ruby-on-rails - 模型测试中未定义局部变量或方法 'session'

我正在创建一个RubyonRails应用程序,并尝试运行涉及我的用户模型的测试,以查看“记住我”功能是否有效。我正在使用Rails的内置cookies散列来存储cookie,并使用session散列来存储当前session。我在使用session变量的地方运行了各种测试(集成、模型和Controller),但出于某种原因,在这种特殊情况下它没有被识别。NameError:undefinedlocalvariableormethod`session'for#错误发生在下面log_in_as方法的elseblock中:test_helper.rb...deflog_in_as(user,o

ruby - 如何在我的 RSpec 测试中访问 Sorcery?

巫术认证gem:https://github.com/NoamB/sorcerySorcery的创建者提供了一个示例Rails应用程序,其中包含在其Test::Unit功能测试中的Sorcery测试助手:https://github.com/NoamB/sorcery-example-app/blob/master/test/functional/users_controller_test.rb#Test::Unitfunctionaltestexamplerequire'test_helper'classUsersControllerTest@user.to_paramassert_

ruby - 获取/发布错误响应的 rspec 测试

我正在尝试测试httpGET错误响应消息,但似乎找不到任何信息或示例预期的错误响应是:{"success":false,"code":400,"message":"ERROR:Thisisthespecificerrormessage"}这会捕获“错误请求”,但如何验证错误响应正文中的“消息”?expect{get""}.toraise_error(/400BadRequest/)提前感谢您的任何见解! 最佳答案 此外:it'returns400status'doget'/my_bad_url'expect(response.sta

ruby-on-rails - 为什么我应该只在测试环境而不是开发或生产环境中在我的 Rails 应用程序上运行 rspec 规范?

有人告诉我,除了测试之外,我不应该在rails_env中运行我的rspec规范。在生产或开发中运行规范的潜在问题是什么?我在两者中都运行规范。我通常在开发中运行规范,除非我正在测试使用Assets管道的东西。我为此切换到生产环境并花费15分钟预编译Assets。与我当前的方法相比,使用测试环境有什么优势吗?我搜索了答案,但没有任何内容解释为什么我不应该使用dev或prod。 最佳答案 在test环境中运行测试套件(例如rspec)旨在隔离资源以解决安全问题,尤其是数据库的完整性。测试通常会损坏或完全删除数据库中的数据。这同样适用于所

ruby - RSpec:使用线程进行测试

在RSpec中,我有创建新线程的函数,并在该线程内执行一些操作——在我的例子中,调用TCPSocket#readline。这是现在的功能:defreadThread.newdowhileline=@socket.readline#TODO:stuffendendend由于线程调度,如果这样写我的测试会失败:it"readsfromsocket"dosubject.socket.should_receive(:readline)subject.readend目前我知道解决这个问题的唯一方法是使用sleep0.1。有没有办法适本地延迟测试,直到该线程运行? 最佳

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:如何测试递归?

我想测试是否使用特定参数递归调用方法。我的方法:classRecursabledefrec(arg)rec(7)unlessarg==7endenddescribeRecursabledoit"shouldrecurse"dor=Recursable.new('test')r.should_receive(:rec).with(0).orderedr.should_receive(:rec).with(7).orderedr.rec(0)endend出乎意料的是,RSpec失败了:expected:recwith(7)once,butreceivedit0times知道我的方法有什么问

ruby - 用 RSpec 包裹在 block 中的测试方法

在我实际操作的简化示例中,假设我有2次对数据库的调用:Repo.add(something_stringy)Repo.remove(something_floaty)我想对数据库调用使用mock,因为真正的调用将在别处进行测试:let(:repo){repo=double("Repo")repo.should_receive(:add).with(instance_of(String))repo.should_receive(:remove).with(instance_of(Float))repo}before{FakeKlass.const_set:Repo,repo}这一切都很好