簡體   English   中英

rspec 問題被認為與 gets.chomp 調用有關

[英]rspec issue believed to be with gets.chomp call

我在運行時遇到問題或對 rspec 錯誤感到困惑:

rspec -fd game_spec

尊重錯誤信息

(以上只是長錯誤信息的開始)

當我在沒有 -fd 的情況下運行它時,它可以工作……但它看起來很傻……出了點問題。 當我使用gets.chomp 時,我開始收到錯誤消息,但我查看了使用它的類似示例。 'the_word' 必須在初始化中設置嗎? 是gets.chomp還是可以? 我很感激任何幫助。 以下是到目前為止的游戲文件及其 rspec。 我根本不想改變太多。 我只想得到我目前所做的工作並繼續努力。 謝謝!

有問題的用戶界面rspec 文件

原因是從ARGV (參數變量)讀取,例如您提供給gets-fd rpsec

你可以很容易地重現這種情況:

> ruby -e "puts gets.chomp" ASD
-e:1:in `gets': No such file or directory @ rb_sysopen - ASD (Errno::ENOENT)
    from -e:1:in `gets'
    from -e:1:in `<main>'

您可以通過在調用gets.之前清除ARGV來防止這種情況發生。

> ruby -e "ARGV.clear; puts gets.chomp" ASD
asd # <-- I then type this
asd # <-- and this is printed

你不能只說ARGV = []因為它是一個常量,但是調用clear很好,因為它沒有重新定義變量。

簡而言之,只需將其放在gets.chomp之前的某個位置:

ARGV.clear

這是關於該主題的另一個問題: Ruby readline failed if process started with arguments

我使用$stdin.gets.chomp ,所以代碼將是:

game.the_word = $stdin.gets.chomp

根據我的研究, gets.chomp將首先檢查 ARGV 中的內容,如果找不到,它會使用標准輸入。 這樣做會直接讀取用戶輸入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM