2010年6月26日土曜日

RhodesTesting

以下のドキュメントは、英語の原文を日本語へ翻訳したものをRhomobile社の許可のもと、公開しています。
公式なドキュメントはRhomobile社のサイトをご覧ください。
また、この文書は2010/6/16(JST)の情報がもとになっています。
この日本語の翻訳について問題・質問などがある場合、コメントを残してください。それ以外については、本ドキュメント内にある問い合わせ先にお願いします。

The following document (a translation of the English original into Japanese) is published with Rhomobile permission.
If you need official documents, please visit Rhomobile site.
In addition, the following document is based on 2010/June/16 (JST) information.
If you have any question, problem about the Japanese translation, please leave your comment. Except for that, refer contacts in the document.


目次

ロギング

メッセージをログに記録するには2つの方法があります。

どんなコントローラからでも、app_infoとapp_errorメソッドを使ってログに残すことができます。これらのメソッドは文字列を取り、コントローラ名をカテゴリーとしてrholog.txtへ書き込みを行います。

また、RhoLogのログクラスもあります。このクラスは2つの文字列を引数に持つinfoとerrorメソッドがあります。最初の文字列はカテゴリ、2番目の文字列はメッセージです。

rholog.txtには以下のようなラインが現れるでしょう:

 <Timestamp> <category> | <message>


RhoErrorクラス

ログやレポートの際に、errorクラスにアクセスするのを便利に思うでしょう:

このクラスはエラー・コードを含み、エラー・コードをテキスト・メッセージへ変換するmessage()メソッドがあります。すべてのコールバックは、このクラスのエラーコードを返します。このコールバックのステータス・テキストはいくつかの内部エラーのメッセージを含みます。よって、ほとんどの場合、それはユーザへ公開すべきではないでしょう。現在RhoErrorは次のエラーコードが含まれています:

   ERR_NONE = 0
ERR_NETWORK = 1
ERR_REMOTESERVER = 2
ERR_RUNTIME = 3
ERR_UNEXPECTEDSERVERRESPONSE = 4
ERR_DIFFDOMAINSINSYNCSRC = 5
ERR_NOSERVERRESPONSE = 6
ERR_CLIENTISNOTLOGGEDIN = 7
ERR_CUSTOMSYNCSERVER = 8
ERR_UNATHORIZED = 9

例としてログイン/ログアウトマネージャを参照してください。

デバッグ

Rhodes Debuggerを使用してOSX上で動作するRhodesアプリをデバッグすることができます。


テスト

フレームワークをどのようにテストするかはここ

ユニットテストを追加

モデルを生成するとき、コントローラとともに_spec.rbが生成されます。



Generating with model generator:
....
[ADDED] app/Person/person_spec.rb


このファイルにはコントローラのテストが含まれており、mspecフォーマットで書かれています:rubyspec.org


describe "Person" do
#this test always fails, you really should have tests!

it "should have tests" do
true.should == false
end
end

我々は、このテスト・フォーマットを内部でも同様に使用します。コア・フレームワークのspecをここで確認できます。これはmspecのより多くの機能を使っています。

しかし、これらのテストを実行するには、テストフレームワークをアプリに含めておく必要があります。これを追加するには、アプリケーションフォルダ内でrhogenタスクを実行します:

 rhogen spec

すると、アプリケーションにmspecフレームワークが追加されたのが分かります。



Generating with spec generator:
[ADDED] app/SpecRunner
[ADDED] app/mspec
[ADDED] app/spec
[ADDED] app/fileutils.rb
[ADDED] app/mspec.rb
[ADDED] app/spec_runner.rb


これでテストを実行する準備が整いました。単にSpecRunnerコントローラへのリンクを追加し、passing/failingテスト数の概要を取得するでしょう

index.erbで:


<li><a href="SpecRunner">Run tests</a></li>

結果の概要が画面に表示されます。

詳細結果はrholog.txtに表示されます:



I 01/15/2010 16:36:33 b0185000 APP| FAIL: Product - Expected true
to equal false

apps/app/mspec/expectations/expectations.rb:15:in `fail_with'
apps/app/mspec/matchers/base.rb:8:in `=='
apps/app/Product/product_spec.rb:5:in `block (2 levels) in <main>'
...

そして最後に、概要がrholog.txtにも印刷されます:


I 01/15/2010 16:36:33 b0185000 APP| ***Total: 3
I 01/15/2010 16:36:33 b0185000 APP| ***Passed: 1
I 01/15/2010 16:36:33 b0185000 APP| ***Failed: 2
テストを無効にする

アプリケーションをプロダクション・ビルドする用意ができたら、build.ymlのbuild propertyを'release'に変更すると、specファイルはバイナリに含まれなくなります:



...
vendor: Acme, Inc.
build: release
...

0 件のコメント: