[解決済み] RubyのRspec。ソースにアクセッサを追加せずにインスタンス変数をテストする
2023-05-13 15:40:11
質問
以下のメソッドをテストしようとしています。
def unprocess_move(board, move)
if move[0].instance_of?(Array)
multi_move = @multi_move.pop(2).reverse
multi_move.each do |single_move|
unapply_move(board, single_move)
end
else
board = unapply_move(board, move)
end
board
end
で、@multi_moveの状態を設定したいのですが、テストのためだけにアクセッサを追加したくありません。アクセサーなしでそうする方法はありますか?ありがとうございます。
どのように解決するのですか?
あなたは
Object#instance_variable_get
メソッドを使って、このようなオブジェクトのインスタンス変数の値を取得することができます。
class Foo
def initialize
@foo = 5 # no accessor for that variable
end
end
foo = Foo.new
puts foo.instance_variable_get(:@foo)
#=> 5
そして
Object#instance_variable_set
はインスタンス変数の値を設定するために使用することができます。
foo.instance_variable_set(:@foo, 12)
puts foo.instance_variable_get(:@foo)
#=> 12
関連
-
[解決済み] ルビーです。インスタンスからクラスメソッドを呼び出す
-
[解決済み】Rspec: 「array.should == another_array "だが、順番は気にしない。
-
[解決済み】Rubyモジュールをインクルードせずに、そのインスタンスメソッドを呼び出すことはできますか?
-
[解決済み] RSpecでモジュールをテストする
-
[解決済み] なぜsumはinject(:+)よりもずっと速いのですか?
-
[解決済み] ruby システムコマンドの終了コードチェック
-
[解決済み] 文字列内の複数の空白と改行を削除する
-
[解決済み] ローカルファイルやURLからIOストリームをオープンする
-
[解決済み] Rubyで既存のハッシュに追加する方法
-
[解決済み] 配列に要素がない場合、その要素を追加します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Gemfileでrubygemを指定するときの~>と>=の違いは何ですか?
-
[解決済み] Rubyの"==="演算子は何をするのですか?重複] [重複
-
[解決済み] Rubyのsend()は何をするのですか?
-
[解決済み] Rubyで本当に安いコマンドラインオプションのパース
-
[解決済み] Capybaraで要素の正確なテキストをマッチングして要素を見つける方法
-
[解決済み] bundler vs RVM vs gems vs RubyGems vs gemsets vs system ruby [closed].
-
[解決済み] 変数名を使ったRubyの正規表現
-
[解決済み] クラスのインスタンスメソッドの一覧を取得する
-
[解決済み] Mavericks と Xcode 5.1 で Ruby Gem install Json が失敗する - unknown argument: '-multiply_definedsuppress'.
-
[解決済み] Rubyのモジュール/ミキシンからクラスメソッドを継承する