[salesforce][CI] JavascriptのUnitTest

By |8月 29, 2012|CI, Javascript, salesforce, |


今回はQUnitを利用してJavascriptのUnitTestをやってみました。またJenkinsからCUIで起動したかったのでPhantomJSも利用しています。
QunitPhantomJSの利用方法については本家サイトをご覧ください。

まずテスト対象のWebページ(VisualforcePage)にQUnit.js、QUnit.css、テストコードを書いたJS(今回は’samp_test.js’)を読み込みます。

[php]
<apex:stylesheet value="{!URLFOR($Resource.sf, ‘/qunit/qunit.css’)}"/>
<apex:includeScript value="{!URLFOR($Resource.sf, ‘/qunit/qunit.js’)}" />
<apex:includeScript value="{!URLFOR($Resource.sf, ‘samp_test.js’)}" />
[/php]

またBody内にQunitで利用するタグを追記します。

[php]
<div id="qunit"></div>
<div id="qunit-fixture">test markup</div>
[/php]

この状態で対象のページにアクセスするとQUnitのテスト結果が表示されます。
(standardStylesheets=”true”で表示すると多少レイアウトが崩れています)

このテストをCUI(PhantomJS)で動かします。PhantomJSではQUnitを動かすための起動ファイルが、Sampleとして用意されていますので、こちらに少し手を加えます。

・phantomjs / examples / run-qunit.js

[php]
//ログイン処理の関係上、3秒ではTimeoutしてしまうため20秒に変更(16行目周辺)
var maxtimeOutMillis = timeOutMillis ? timeOutMillis : 20000, //< Default Max Timout is 3s
[/php]

これで準備は完了です。
下記コマンドを実行するとテスト結果が戻ってきます。

$ phantomjs –web-security=no run-qunit.js ‘https://login.salesforce.com/?un=testuser%40dummy.jp&pw=dummy&startURL=apex%2fdummy’

※Salesforceではログインページ右側の広告がiframeとなっており、別ドメインから読み込まれていると警告を出力してしまうため、オプション”–web-security=no”を付加してします。