タグ

ブックマーク / rakuto.blogspot.com (4)

  • Rubyのexpect.rbの使い方

    SSHでつないで何か操作を行ったり、パスワードの入力を自動化したり、対話形式のプログラムをプログラム中から利用する場合は、expectモジュールを使用するのが一般的です。 Rubyは標準ライブラリ中にexpect.rbが存在していますが、IO#exceptとしてIOのメソッドとして定義されていて、このままでは扱いにくいので、仮想端末を扱うPTYライブラリとあわせて使用します。 require 'pty' require 'expect' module Expect def spawn(cmd) puts "CMD: #{cmd}" if $expect_verbose PTY.spawn(cmd) do |r,w,pid| @input_stream = r @output_stream = w @child_pid = pid PTY.protect_signal do yield en

  • [RSpec] Mock API

    Mock Object Mock Objectの作成 my_mock = mock(<name>) my_mock = mock(<name>, <options>) person = mock('person', :null_object => true) Mockは名前を引数に取る。仕様の検証が終わった際に全てのMockが検証される。 option引数をハッシュで与えることでMockの振る舞いを調整できる。現在、:null_objectのみがサポートされている。:null_object => trueを引数に渡すとMockに対する全てのメソッドがMock自身を返すようになる。 Mockに対してスタブメソッドを定義する person.should_receive(:name) # person.name => nil person.should_not_receive(:name) #

  • [Rails] RSpec on Railsを始めてみた - インストールと実行

    RSpec on Railsのさわりだけ。 おそばせながら今頃、BDD(Behaviour Driven Development)を知りました。。。 これからはきちんとBDD or TDDで開発を進めます。 BDDはテスト駆動開発と言葉の言い回しが大きく異なっている。 「ベヒイビアを書いて仕様を設計する。」これが大きなポリシー。 BDDでは必ず仕様コード(spec)を書いてから実際のコーディングを行う。 Rubyには、RSpecというツールがありこれを利用する。 gemパッケージが用意されているので簡単。 $ gem install rspec 次にRSpec on Railsプラグインをインストール。 REL_X_Y_Zの部分をrspecのバージョンとあわせる必要がある。 $ cd RAILS_ROOT $ ruby script/plugin install svn://rubyfor

  • [rails] 実践RSpec on Rails - コントローラとモデルのBehaviourを書く

    先日RSpec on Rails0.7(0.7.1も)が出ました。 まだまだ枯れていないので実際のプロジェクトで採用するのは難しい面もありますが、isoration from Databaseを支えるmock/stub frameworkや、isoration from viewsは強力なので、それほど影響の無い作成済みの社内アプリにRSpec on Railsを適用してみました。 maihaさんがやっておられるように、自作で作るのもすごく楽しそうなのですがとりあえずは使ってみます。mock/stub frameworkの実装の詳細をあとでみる。 BBDでは、Behaviourを書いてからコードの実装を行うのですが、今回は以前にうみがめで作った社内用情報共有ツールBasecamp(某signalsのパクリ)にBehaviourを書いていくことになります。 BasecampのSpec 社内で

  • 1