我一直在使用MiniTest学习TDD/BDD。我想弄清楚的是我的代码的哪些部分应该使用MiniTest::Unit::TestCase进行测试,哪些部分应该使用MiniTest::Spec进行测试。我了解单元测试和集成测试之间的区别,我似乎无法从网络上的示例中掌握的是TestCase和Spec是否都是单元测试,或者TestCase是否用于单元测试以及用于集成测试的规范?我是否应该在MiniTest::Unit::TestCase类中保留我的快速单元测试,在MiniTest::Spec期望中保留更长时间的集成测试,后者更经常描述功能?这有关系吗,还是个人喜好问题?
我曾多次遇到这种困境。我的单元测试是否应该复制他们正在测试的方法的功能以验证其完整性?或者单元测试是否应该努力用大量手动创建的输入和预期输出实例来测试该方法?我主要针对以下情况提出问题:您正在测试的方法相当简单,并且可以通过浏览代码一分钟来验证其正确操作。简化示例(ruby):defconcat_strings(str1,str2)returnstr1+"AND"+str2end上述方法的简化功能复制测试:deftest_concat_strings10.timesdostr1=random_string_generatorstr2=random_string_generatorass
我正在编写规范来测试当有人通过URL发送查询时mashup_controller的行为。我需要模拟URL中包含的参数,我读到post()方法可以做到这一点,但是当我收到错误时:1)MashupControllersimulatesqueryFailure/Error:post:createNoMethodError:undefinedmethod`post'for##./mashup_controller_rspec.rb:9:in`block(2levels)in'Finishedin0.20199seconds1example,1failureFailedexamples:rspe
我的基本逻辑是在某个地方运行一个无限循环并尽可能地测试它。无限循环的原因并不重要(游戏的主循环,类似守护进程的逻辑......)而且我更多地询问关于这种情况的最佳实践。让我们以这段代码为例:moduleBlahextendselfdefrunsome_initializer_methodloopdosome_other_methodyet_another_methodendendend我想使用Rspec测试方法Blah.run(我也使用RR,但简单的rspec将是一个可接受的答案)。我认为最好的方法是分解更多,比如将循环分离成另一个方法或其他东西:moduleBlahextendsel
我已经专门使用ruby大约一个月了,我真的很喜欢它。但是,我很难使用甚至学习TDD。我的大脑不是那样运作的……我真的非常想学习TDD,但老实说我有点困惑。我在谷歌搜索时发现的所有文章大多是针对Rails的,这对我来说并不有趣,因为我想学习如何对任何ruby应用程序进行有效测试,从简单的单文件脚本到复杂的gem,而不是网络应用程序。此外,有太多的框架和很少的入门教程。谁能给我一些关于如何学习TDD的建议,这样我至少可以开始认为自己是一个有抱负的rubyist? 最佳答案 尝试RubyKoans.
在我的应用程序中,我想要一个Car模型。它将有两个字段:date_from和date_till(指定某人使用它的时间段)。我希望模型验证date_from应该小于或等于date_till。我的model_spec.rb草稿如下所示:require'spec_helper'describeCardoit{shouldvalidate_presence_of(:model)}it{shouldvalidate_presence_of(:made)}it"shouldhavedate_tillonlyifithasdate_from"its"date_tillshouldbe>=date_f
使用rspec和Rails测试电子邮件发送的最佳实践和工具是什么?例如,我如何测试电子邮件是否已发送或我应该测试什么才能进行有效测试和可接受的覆盖范围。如果你们需要一个例子,我将如何去测试它:classUserMailer 最佳答案 email-spec看起来是个不错的库http://github.com/bmabey/email-spec 关于ruby-on-rails-如何使用Rspec测试电子邮件发送?,我们在StackOverflow上找到一个类似的问题:
刚刚学习rspec语法,我注意到这段代码有效:context"givenabadlistofplayers"dolet(:bad_players){{}}it"failstocreategivenabadplayerlist"doexpect{Team.new("Random",bad_players)}.toraise_errorendend但是这段代码没有:context"givenabadlistofplayers"dolet(:bad_players){{}}it"failstocreategivenabadplayerlist"doexpect(Team.new("Rando
我试图让Capybara在一个简单的Ruby脚本中运行——即没有/在Rails之外。这是脚本:require'rubygems'require'capybara'require'capybara/dsl'includeCapybaraCapybara.current_driver=:seleniumCapybara.app_host='http://www.google.com'visit('/')问题是,当我运行它时,我得到了这个错误:NameError:uninitializedconstantCapybara::Sessionattoplevelindsl.rbatline52m
在RSpec中:我可以像在xUnit风格的测试框架中那样将消息附加到支票上吗?怎么办?assert_equalvalue1,value2,'somethingiswrong' 最佳答案 对于RSpec3+:消息可以自定义为字符串或使用proc(查看引用资料)。expect(1).toeq(2),'oneisnottwo!'CustomizedmessageRSpectriestoprovideusefulfailuremessages,butforcasesinwhichyouwantmorespecificinformation,