[#44431] コンストラクタの引数について&インスタンス変数の持ち方について — Akira Hayakawa <ruby@...>

度々オブジェクト指向についての質問ですいません。

17 messages 2008/01/04
[#44433] Re: コンストラクタの引数について&インスタンス変数の持ち方について — Yukihiro Matsumoto <matz@...> 2008/01/04

まつもと ゆきひろです

[#44469] pdf 作成 ライブラリ — "Luiz Aoki" <luizruby@...>

はじめまして、青木ルイスと申します、

14 messages 2008/01/12
[#44479] ファイル出力時のprintについて — m-hatake@... 2008/01/16

畠山と申します。

[#44483] format %g の丸めについて — 山崎雄介 <y-yamasaki@...>

山崎(ゆ)です。

14 messages 2008/01/16

[ruby-list:44450] Re: 他のクラスに依存しているコードのテスト

From: とみたまさひろ <tommy@...>
Date: 2008-01-06 22:45:48 UTC
List: ruby-list #44450
とみたです。

On Mon, 7 Jan 2008 03:59:26 +0900
松田 明 <ronnie@dio.jp> wrote:

> このBのfugaメソッドに対して単体テストコードを記述 
> する場合、
> 例えば RSpecでは以下のように書けます(1個目の  
> example)。
> 
> describe B do
>    before do
>      @b = B.new
>      @a = mock(A)
>      @a.stub!(:hoge).with('aiueo').and_return('<hoge>aiueo</hoge>')
>      A.stub!(:new).and_return(@a)
>    end
> 
>    it "param for fuga() should be reversed and hogenized" do
>      @b.fuga('oeuia').should == '<hoge>aiueo</hoge>'
>    end
> 
>    it "A#hoge should be called inside fuga() once with reversed param"  
> do
>      @a.should_receive(:hoge).with('ABCDE').once
>      @b.fuga('EDCBA')
>    end
> end

なるほど。

モックとかスタブを使うと良さそうだとは思っていたんですが、具体的な書き
方がわかってませんでした。

上記の A.stub!(:new).and_return(@a) で、A.new() を書き換えてしまうよう
に思っていたのですが、stub! は example 内だけに閉じられるんですね。なの
で、他のテストには影響を与えないと。

# なんでそんなことができるのか、RSpec の実装が分かりませんが… (^^;
# あとで調べてみます。

ありがとうございました。

-- 
とみたまさひろ <tommy@tmtm.org>
3469 42CC 4D32 F53C AD98  65A5 8C37 FF09 69C1 6040

In This Thread