草庐IT

ruby-on-rails - 如何扩展 Ruby Test::Unit 断言以包含 assert_false?

显然在Test::Unit中没有assert_false。您将如何通过扩展断言并添加文件config/initializers/assertions_helper.rb来添加它?这是最好的方法吗?我不想修改test/unit/assertions.rb。顺便说一句,我不认为这是多余的。我使用的是assert_equalfalse,something_to_evaluate。这种方法的问题是很容易意外使用assertfalse,something_to_evaluate。这将始终失败,不会引发错误或警告,并且会在测试中引入错误。 最佳答案

ruby-on-rails - RSpec 中单个设置的多个断言

我想优化一些较慢的规范。此类规范的示例如下所示:require'rspec'classHeavyComputationdefcompute_resultsleep1#somethingcomputeheavyhere"verybigstring"endenddescribeHeavyComputation,'preferredstyle,butslow'dosubject{described_class.new.compute_result}it{shouldinclude'big'}it{shouldmatch'string'}it{shouldmatch/very/}#+50oth

ruby - 你如何断言另一个 ruby​​ 模块的异常被抛出? (使用 assert_throws)

我正在尝试编写这样的代码:assert_throws(:ExtractionFailed){unit.extract_from('5x2005')}ExtractionFailed是Exception的一个简单子(monad)类,在test/unit下,我试图断言它在我调用unit.extract_from(...坏数据...)我已经将ExtractionFailed移动到SemanticText模块中,所以现在test/unit说:expectedtobethrownbutwasthrown.我尝试编写assert_throws(:SemanticText::ExtractionFa

ruby - Minitest 断言在检查时失败

每当我尝试assert_equal两个对象时,我总是会遇到这样的错误:NovisibledifferenceintheUser#inspectoutput.Youshouldlookattheimplementationof#==onUseroritsmembers.Time和Array也发生过这种情况。Minitest文档对此也没有说太多。我使用的是Ruby2.0.0,但我使用的是2.2.0,同样的事情发生了。也使用最新的minitest。此外,我正在运行Ubuntu14.10。 最佳答案 关于留言当断言失败时显示这条消息,有点不

ruby-on-rails - 我如何断言 Rails 集成测试中没有路由匹配?

我有一个Rails3集成测试来测试我的路线。它包含如下测试:assert_routing("/#{@category.url.path}/#{@foo.url.path}",{:controller=>'foo',:action=>'show',:category=>@category.to_param,:foo=>@foo.to_param})我还想测试一个没有路由匹配的情况。显然,测试生成在这种情况下没有任何意义,所以我只需要assert_recognizes的倒数。我希望能够做这样的事情:assert_not_recognized('/adfhkljkdhasjklhjkldfa

ruby - 在 Ruby 的正则表达式中,前瞻和后视概念如何支持这种零宽度断言概念?

我刚刚经历了这个概念Zero-WidthAssertions从文档中。我想到了一些快速的问题-为什么这样的名字Zero-WidthAssertions?Look-ahead怎么了和look-behind概念支持这样的Zero-WidthAssertions概念?什么这样的?,,=s,-4个符号在模式内指示?你能帮我集中精力了解实际发生的事情我还尝试了一些小代码来理解逻辑,但对它们的输出没有那么自信:irb(main):001:0>"foresight".sub(/(?!s)ight/,'ee')=>"foresee"irb(main):002:0>"foresight".sub(/(?

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 - 在 ruby​​ 中,您可以在 irb 中执行 assert_equal 和其他断言吗?

你能在irb中执行assert_equal吗?这是行不通的。require'test/unit'assert_equal(5,5) 最佳答案 当然可以!require'test/unit'extendTest::Unit::Assertionsassert_equal5,5#发生的事情是所有断言都是Test::Unit::Assertions模块中的方法。从irb内部扩展该模块使这些方法可用作main上的类方法,这使您可以直接从irb提示符中调用它们。(实际上,在任何上下文中调用extendSomeModule都会将方法放在该模块中

ruby - 断言 Cucumber 中抛出了一个特定的异常

场景我正在编写一个库(没有RubyonRails),我想为其提供非常详细的Cucumber功能。这尤其包括描述在各种情况下应该抛出的错误/异常。示例编写Cucumber步骤最直观的方式可能是这样的WhenIdosomethingunwantedThenan"ArgumentError"shouldbethrown问题我必须解决两个问题:抛出异常时,第一步不应失败。第一步抛出的异常应该可供第二步访问,以便执行一些断言魔法。不优雅和繁琐的解决方案我能想到的最佳方法是在第一步中缓存异常并将其放入第二步可以访问的实例变量中,如下所示:When/^Idosomethingunwanted$/do

ruby - 如何在 ruby​​ 代码中放置断言

我想在我的ruby​​代码中使用断言和验证(例如:检查是否创建了zip文件、标签是否存在、文本区域中的消息等)。我已经放置了一些断言语句,例如assert@selenium.is_text_present(textMessage),但它们不起作用。如果要安装任何用于断言的ruby​​gem,请告诉我。 最佳答案 对于简单的断言,你可能最好使用一个block来滚动你自己的断言方法:ruby-1.9.1-p378>classAssertionErrorend=>nilruby-1.9.1-p378>defassert&blockruby