草庐IT

ruby - rspec 中的 while 循环

我试图了解在rspec中测试while循环的最佳方法是什么。我允许用户输入他/她想玩的游戏类型。defget_actiongets.strip.downcaseenddeftype_of_gameputs"Enterthetypeofgameyouwouldliketoplay(humanv.human,computerv.computer,orhumanv.computer):"gametype=get_actionuntil(gametype=="humanv.human"||gametype=="computerv.computer"||gametype=="humanv.com

ruby - 使用 RSpec 通过获取测试用户输入

我是使用RSpec和Ruby进行单元测试的新手,我对如何测试我的代码是否使用gets方法有疑问,但没有提示用户输入。这是我要测试的代码。这里没什么特别的,只是一个简单的衬垫。我的文件.rbMy_name=gets这是我的规范。require'stringio'defcapture_name$stdin.gets.chompenddescribe'capture_name'dobeforedo$stdin=StringIO.new("JohnDoe\n")endafterdo$stdin=STDINendit"shouldbe'JohnDoe'"doexpect(capture_name

ruby - 我可以在自定义匹配器中使用内置的 RSpec 匹配器吗?

我在功能规范中有以下期望(相当低级但仍然必要):expect(Addressable::URI.parse(current_url).query_values).toinclude('some=>'value','some_other'=>String)请注意,第二个查询值是一个模糊匹配,因为我只想确保它存在,但我无法对其进行更具体的说明。我想将其提取到自定义匹配器中。我开始于:RSpec::Matchers.define:have_query_paramsdo|expected_params|matchdo|url|Addressable::URI.parse(url).query_

ruby - 在 VS Code 上运行 rspec

我有这样的rspec测试代码describe'Utils'doputs1111describe'#time_condition'doputs2221itdoputs'aaa'endputs2223endend我的launch.json是这样的{"name":"RSpec-all","type":"Ruby","request":"launch","cwd":"${workspaceRoot}","program":"${workspaceRoot}/spec/*_rspec.rb","args":["--pattern","*_rspec.rb"]},当我在vscode上运行测试时,我

ruby - Rspec 无法检查记录器信息输出

我有一个非Railsruby​​应用程序,它使用记录器来处理输出到标准输出的日志。我想添加用于检查输出的规范,并找到了两种实现方法,但似乎两种方法都不起作用。所以这两种方式都在这个spec.rb文件中:require'rspec'require'logger'describe'Logger'doit'expecttooutput'doexpect{Logger.new(STDOUT).info('Hello')}.tooutput.to_stdoutendit'expecttorecieve'doexpect(Logger.new(STDOUT).info('Hello')).tore

ruby - Rspec:弃用警告

我创建了一个运行良好的以下rspec模拟,但在执行它时收到警告。Using`stub`fromrspec-mocks'old`:should`syntaxwithoutexplicitlyenablingthesyntaxisdeprecated.Usethenew`:expect`syntaxorexplicitlyenable`:should`instead.calledfrom/file/path.rb:26:in`block(3levels)in'.这是我的单元测试。第26行是user_health_condition.stub(:user_condition_flag)do|

ruby - Autospec/rspec 不工作,做错了什么?

我想知道这是否在StackOverflow上有它的位置,但由于它与编程相关,我会把它扔掉。这是我的问题。我是TDD的新手,我喜欢Ruby,所以我走的明显路径是用rspec测试东西。为什么明显?我在不同的截屏视频中看到它,并认为它非常简洁。然后我在某处看到“autospec”,并尝试使用它。所以我安装了gem,使用sudogeminstallZenTest(根据说明here)接下来,我进入包含“digit.rb”和“digit_spec.rb”的文件夹,并在没有任何参数的情况下启动autospec。什么都没发生。值得注意的是,我的spec文件中有两个测试,我可以使用spec命令对其进行测

ruby-on-rails - RSpec 重构帮助

在测试或测试驱动开发方面,我是一个大菜鸟,所以我真的很难测试我的代码。最大的原因是这样的情况......我有一个模型,Photo,它有字段“place”、“city”、“state”和“country”。我创建了一个方法“location”,它可以接受一个参数,并将返回最小形式、缩写形式或完整形式的位置。这是模型代码:deflocation(form=:full)usa=country.eql?('US')||country.eql?('UnitedStates')country_name=Carmen::country_name(self.country)ifself.state.p

ruby - RSpec:在不访问数据库的情况下测试 AR 查找器

我将如何使用RSpec测试以下查找器?defself.find_by_mbid(mbid)super(mbid.downcase())end我认为唯一可行的方法是事先将其存储在数据库中,我希望避免这种情况,因为这是一个单元测试。我在这里看不到如何返回模拟,因为RSpec几乎无法访问super。有更好的方法吗?还是单元测试对于这类事情来说太低级了? 最佳答案 如果您愿意更改实现,您可以模拟它,但我建议使用数据库指定查找器。 关于ruby-RSpec:在不访问数据库的情况下测试AR查找器,我

ruby - 如何更改 RSpec 描述 block 的模块上下文?

我有一个对象的规范,它位于多个模块级别。像这样:describeFoo::Bar::Baz::Quux::Widgetdoit"should==anotherWidgetforthesameDoohickey"dodoohickey=stubFoo::Bar::Baz::Quux::Widget.new(doohickey).should==Foo::Bar::Baz::Quux::Widget.new(doohickey)endit"should!=anotherWidgetforadifferentDoohickey"doone_doohickey=stubanother_dooh