2016-11-01 7 views
2

office.jsベースのコードをユニットテストするための共通のプラクティス、フレームワークまたはパターンはありますか? オブジェクトモデルのコンポーネントが多数あるため、office.jsへの呼び出しをモックすることは不可能です。 テストコンテナタスクペインアプリにテストコードを起動するためのカルマランチャーのようなものがありますか? 誰もがoffice.jsと対話するコードをテストする効果的な方法を試しましたか?ユニットテストのoffice.jsアプリコードはどうやっていますか?

答えて

0

は私がやってしまったものです:

  1. は解決
  2. に新しい作業ウィンドウアプリのプロジェクトを追加しました https://github.com/jasmine/jasmine/releases
  3. メイドタスクペインのアプリのマニフェストソースの場所地点からのジャスミンスタンドアロンのzipを付属SpecRunner.html
  4. Office.initilizeで実行するwindow.loadのテスト仕様の実行を置き換えるために、boot.jsが変更されました。
1

"標準" javascriptコードの場合と同じ方法で、Office.jsベースのコードをテストするべきだと思います。事実、Office.jsはJQueryのような別のJavaScriptの依存関係です。

もちろん、テストページにOffice.jsを含めず、Officeオブジェクトをモックで置き換えてはいけません。あなたはSinon Jsのjavascript mocking frameworkを見てみることができます。

ユニットテストを書くときは、テスト対象システム(SUT)と呼ばれるコード(クラスまたはモジュール)を分離します。アドインをAngularなどのSingle Page Applicationフレームワークに基づいて作成した場合、SUTはコントローラになる可能性があります。次に、依存関係としてOfficeオブジェクトを挿入することができます。実際という文脈で、これはOffice.jsからの本当のOfficeになります。テストでは、これはモックになります。ここで

+0

理論的には、はい、これは私たちがやり遂げる方法です。ただし、たとえばコードを とすると、https://github.com/OfficeDev/office-js-docs/blob/master/docs/excel/build-your-first-excel-add-in.md Officeオブジェクトを嘲笑してしまうと、仕事量が過大になることになります。ワークブック、シート、範囲、チャート、およびすべてのサブオブジェクトをモックする必要があります。だから、嘲笑は選択肢のようには見えない。 jqueryユニットテストでは模擬DOMは作成されませんが、HTMLページで実行されるので、Office.jsベースのテストはコンテナタスクペインアプリケーションで実行する必要があると思います。 – Sameera

+0

@Sameera単体テスト(統合テストなし)の場合は、すべてをモックする必要はなく、SUTで使用されるOfficeのメソッド/プロパティだけです。これは大きな仕事ではないはずです... –

+0

@Sameera、私はそれに現実的には、入力/出力を受け入れるスタンドアロンの関数を書いています。それらをユニットテストし、Office.jsを完全に除外します。そして、私はExcelの内部で実行される別の一連の統合テストを行い、できるだけユーザーのやりとりに近いUI駆動の代わりにプログラムで駆動されるようにします –

関連する問題