草庐IT

rspec-sidekiq

全部标签

ruby - 如何测试 rspec 中方法调用的顺序?

我有一个类使用命令模式按顺序执行一系列简单的转换步骤。数据以数据馈送(XML格式)的形式出现,然后使用单一用途的步骤类通过多个步骤进行转换。所以它可能看起来像这样(实际类名不同):raw_data=Downloader.new(feed)parsed_data=Parser.new(raw_data)translated_data=Translator.new(parsed_data)sifted_data=Sifter.new(translated_data)collate_data=Collator.new(sifted_data)等等我对每个类都有单元测试,我有集成测试来验证整个

ruby-on-rails - Sidekiq:失败作业的重试更改率?

我有特定类型的作业,我希望重试的频率高于默认Sidekiq间隔设置的频率。这目前可能吗?理想情况下,作业将每5秒重试一次,最多一分钟。不完全确定这是目前插入Sidekiq作业的微不足道的事情。 最佳答案 根据:https://github.com/mperham/sidekiq/wiki/Error-Handling你可以这样做:classWorkerincludeSidekiq::Workersidekiq_retry_indo|count|5endend 关于ruby-on-rail

ruby-on-rails - Sidekiq 和 rails 4 actionmailer 从不发送电子邮件

我在Rails4应用程序中设置了sidekiq,用于发送电子邮件和处理后台作业。我还设计了我正在使用的devise_async和典型的联系表单电子邮件。我正在使用gmail发送电子邮件。如果我删除sidekiq,它通常会通过gmail(设计和联系表单)发送电子邮件,但是当我启用它时,它不起作用(devise_async和联系表单都没有)。Sidekiq显示后台作业成功启动和完成(我也通过sinatra应用程序看到它们已被处理)但电子邮件从未送达。在开发中,控制台显示已发送电子邮件(使用devise_async和联系表单,因为它们已使用sidekiq成功处理)。我已经尝试过的:我已经为s

ruby-on-rails - RSpec:在每个上下文之后刷新表/销毁对象

你如何删除你创建的对象(在数据库和内存中)每次测试后AND在每个上下文之后?(在某种情况下,相互构建测试可能是有意义的)是否有自动执行此操作的方法?我有以下问题:每个测试都会将条目保存到数据库中。下一个测试则取决于这些条目。即使我想构建依赖于其他测试的测试,我也做不到,因为测试的执行顺序是不可控的。工厂.rb:sequence(:name){|n|"purchaser#{n}"}organization_spec.rb:context"whennosupplierexists"doit"findsnoassociatedsuppliers"dopurchaser=create(:org

ruby - Rspec——需要 stub File.open 在另一个文件中被调用

在我的测试中,我使用一些参数初始化了一个名为Package的新类。在这个类的初始化中,我打开了一个文件,该文件在我的远程机器上可用,但在本地通常不存在。我想知道如何在我的测试中stub该方法。我正在使用rspec和mocha。我试过类似的东西:File.stubs(:open).with(:file).returns(File.open("#{package_root}/test_files/test.yml"))在我的测试中初始化Package之前,我有这一行。我遇到了这个错误:unexpectedinvocation:File.open('package/test_files/te

ruby - 使用 rspec 测试 Ruby 模块

我很难在SO/Google上找到这个特殊案例。我有一个带有函数的模块,为了使用它们,您必须创建一个包含/扩展模块的类,具体取决于您需要实例方法还是类方法。moduleAdefsay_helloname"hello#{name}"enddefsay_bye"bye"endend如何使用rspec测试此模块?我有这样的事情,我不确定我应该在哪里创建类和扩展模块。describeAdoclassMyClassextendAendbefore(:each){@name="Radu"}describe"#say_hello"doit"shouldgreetaname"doexpect(Mycla

ruby - 如何使用 RSpec 断言一个类将响应一个类方法?

假设我有一个这样的类定义:classFoodefinit(val)@val=valenddefself.bar:barenddefval@valendend规范如下:describeFooit{shouldrespond_to(:val)}it{shouldrespond_to(:bar)}end第二个it断言失败。从RSpec的文档中我不清楚respond_to应该在类方法上失败。 最佳答案 现在建议我们使用expect,像这样:describeFoodoit'shouldrespondto:bar'doexpect(Foo).t

ruby-on-rails - 使用 rSpec 测试 delayed_job 链的最佳方法是什么?

目前,当我的代码中有一个延迟方法时,如下所示:CommentMailer.delay.deliver_comments(@comment,true)我在规范中写了这样的东西:dj=mock("DelayProxy")CommentMailer.should_receive(:delay).and_return(dj)dj.should_receive(:deliver_comments).with(comment,true)一般来说,有没有更好的方法来处理这个和/或类似rSpec中的链式方法? 最佳答案 我们可以在beforeblo

ruby-on-rails - 将 RSpec 与 Ruby on Rails 结合使用的国际字符

我刚刚开始使用RSpec,我在RSpecgithub存储库上复制了非常简单的测试,以确保一切按预期工作:require'spec_helper'describe'HomePage'doit"Welcomestheuser"dovisit'/products'page.shouldhave_content("Welcome")endend当我将字符串更改为“Olá”或“Caçamba”之类的字符串时,问题就开始了。任何带有特殊字符的字符串。当我这样做时,出现以下错误:invalidmultibytechar(US-ASCII)(SyntaxError)invalidmultibytech

ruby-on-rails - 来自测试控制台的 RSpec 模拟

我想从Rails测试控制台测试RSpecstub和模拟。是否可以?如果是,怎么办?这是我试过的:$railsctest>require"./spec/spec_helper"true>source=double('source')NoMethodError:undefinedmethod`double'formain:Object 最佳答案 您需要要求'rspec/mocks/standalone',如statedinthedocumentation. 关于ruby-on-rails-来