From: 三輪晋( M. S. ) <mi...@gm...> - 2012-04-04 15:21:21
|
三輪です。 ( すいません、users-talk に 1 度投げたんですがツッコミを頂いたので devel で投げなおします ) * ruby 1.8.7 * tdiary は github から取得 calendar2 プラグインのテストを書こうとしています。 他のテストを見よう見まねでまず以下のような calendar2_spec.rb を書きました。 $:.unshift(File.dirname(__FILE__)) require 'plugin_helper' require 'pp' describe "calendar2 plugin" do def setup_calendar2_plugin plugin = fake_plugin(:calendar2) end describe "calendar2" do before do @plugin = setup_calendar2_plugin() end it 'should ' do @plugin.calendar2().should == true end end end テストを実行すると @cgi が nil だと言われます。 % pwd /cygdrive/c/home/public/tdiary/tdiary-core % bundle exec rspec spec/plugin/calendar2_spec.rb F Failures: 1) calendar2 plugin calendar2 should Failure/Error: @plugin.calendar2().should == true NoMethodError: undefined method `user_agent' for nil:NilClass # (calendar2.rb):99:in `calendar2' # ./spec/plugin/calendar2_spec.rb:16 Finished in 0.00098 seconds 1 example, 1 failure Failed examples: rspec ./spec/plugin/calendar2_spec.rb:15 # calendar2 plugin calendar2 should たしかに PluginFake 内には @cgi がありません。 @cgi を使っているプラグインのテストを書くときは何を設定しておけばよいのでしょうか。 他のテストを参考にしようとしたんですが @cgi を使ってるプラグインのテストを見つけられませんでした。 [追記] kdmsnr さんから助言をいただきました。 > トップレベルで > > @cgi = CGIFake.new > > はダメですか? describe "calendar2 plugin" do の外と、内側の両方で試したんですが 双方で undefined method `user_agent' for nil:NilClass と言われました。 ↓これも undefined method @cgi = CGIFake.new describe "calendar2 plugin" do : ↓これも undefined method でした describe "calendar2 plugin" do @cgi = CGIFake.new : -- みわ |