gpt4 book ai didi

ruby-on-rails - 新手 Cucumber 挂机 $?.success?没有方法错误

转载 作者:数据小太阳 更新时间:2023-10-29 07:23:13 25 4
gpt4 key购买 nike

所以我在“Pragmatic Cucumber”中的第一个项目中,我在我的步骤定义中遇到了一个未定义的方法错误。错误来自 $?.success?。不用说我很困惑。我错过了 gem 还是什么?

这是步骤定义

Given /^the input "(.*?)"$/ do |input|
@input = input
end

When /^the calculator is run$/ do
@output = 'ruby calc.rb #{@input}'
raise('Command failed!') unless $?.success? #$?.success? is failing. look that up.
end

Then /^the output should be "(.*?)"$/ do |arg1|
pending # express the regexp above with the code you wish you had
end

这是错误。

Feature: Adding

Scenario: Add two numbers # features/adding.feature:3
Given the input "2+2" # features/step_definitions/calculator_steps.rb:1
When the calculator is run # features/step_definitions/calculator_steps.rb:5
undefined method `success?' for nil:NilClass (NoMethodError)
./features/step_definitions/calculator_steps.rb:7:in `/^the calculator is run$/'
features/adding.feature:5:in `When the calculator is run'
Then the output should be "4" # features/step_definitions/calculator_steps.rb:10

Failing Scenarios:
cucumber features/adding.feature:3 # Scenario: Add two numbers

1 scenario (1 failed)
3 steps (1 failed, 1 skipped, 1 passed)
0m0.012s

那么,这里的问题是什么?我知道。成功了吗?是正确的,为什么不是 $?注册?谢谢!

最佳答案

您需要使用反引号而不是引号来运行您的命令:

@output = 'ruby calc.rb #{@input}'

应该是:

@output = `ruby calc.rb #{@input}`

编辑:

刚刚测试过这个——你要非常小心地使用这个结构。 $? 的值不会在 Cucumber 场景之间被清除,因此很容易对在先前场景中运行的命令的结果进行断言。你不妨看看Aruba它专为需要 Cucumber 执行或断言命令行程序的情况而设计。

关于ruby-on-rails - 新手 Cucumber 挂机 $?.success?没有方法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11916518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com