2011-07-26 4 views
10

ドラッグアンドドロップ、ホバー、ダブル/シングルクリック、キャンバス上の描画などのユーザー対話のスペックをテストするためのjavascriptのテストライブラリを探しています。私はjspecとジャスミンを含むいくつかの図書館を見てきましたが、どちらも単体テストに基づいているようです。より高いレベルのjavascriptイベントをテストする

上記のライブラリのいずれかがこのようなテストをサポートしているという事実を見落とした場合、私はその例を愛するでしょう。

編集


だから私は昨夜見ての多くを行なったし、本当に何に遭遇しませんでした。可能な場合は、カスバラスタイルのジャスミンのようなものよりも高いレベルでユーザーのやりとりをエミュレートすることが可能であれば、domとのやりとりを偽装するという意味です。

私は実際にマウスをエミュレートするライブラリを希望します - >マウス移動 - >マウスアップイベントチェーン。

このような魔法の創造は存在しますか?

ポストバウンティ編集


だから、私はJSのテストライブラリで実験を続け、本当に彼らがHTML5のキャンバスを使用して周りをどのように機能するかと満足していないしています。ジャスミンはキャンバスを初期化しないため、キャンバスでジャスミンのイベントをテストすることはできません。

実際にアプリケーションコードをテストするのではなく、「html」フィクスチャを使用する必要があるのは嫌です。それはあなたのアプリにjsを統合しようとしている場合、逆に思えます。仕様テストのためには理にかなっていますが、WebフレームワークのBDDテストでは実際にテストするためにアプリケーションビューを使用することが義務付けられています。

もう一度このようなモンスターが存在するのですか、雲の中に私の頭がありますか? JavaScriptでユーザーの行動をエミュレート

+5

あなたはSeleniumまたはWatrを試しましたか? –

+0

私はSeleniumを使用しましたが、js用のセレンライブラリはわかりません。これは他のテストフレームワークを推進するためにウェブドライバに慣れてきただけです。 Watr私はちょうどGoogleにしようとしたので、リンクがいいと何も得られませんでした。 Ty – austinbv

+0

申し訳ありませんが、私はそれを間違って綴りました。 http://watir.com/ –

答えて

2

PhantomJSまたはZombieJSを試しましたか?私は特にPhantomについて良いことを聞いてきました。

=============

もう一つの提案:セレンプラグイン/マクロ。 www.seleniumwiki.com/selenium-rc/selenium-mousedownat-mousemoveat-and-mouseupat-example/またはglauche.de/2009/09/09/drag-drop-with-selenium/。

0

は読み取り専用標準に準拠のブラウザでのElementにディスパッチする、カスタムEvent Object Sを作成するためにあなたを必要とし、そのプロパティを変更することがている最も重要なのでしょう。 IEで

5+彼らは変更のように見えるが、それは明らかにクロスブラウザのテストを除外します。

だから、私は何を考えていることは可能であるとは思いません。


編集:それについて考える(とセレン Firefox拡張機能のドキュメントに探して)、明らかにあなたは、与えられたスケジュールに従って、プログラムでカスタムを作成したJavaScriptプログラムを作成することができるだろうEvent Objectは、ユーザーの動作をシミュレートします。

しかし、これがSeleniumの機能であるか、より重要なのは、これが信頼できる方法かどうかはわかりません。それは基本的にあなたが除外した"faking interaction with the DOM"を意味します。

Btw、これを正しく取得してください。つまり、アプリケーションのJavaScript部分をテストするためのJavaScriptライブラリが必要です。ブラウザレベルで動作するように(DOMエンジンのレベルではなく)、つまりブラウザでキャプチャされたかのように本物のユーザインタラクションをシミュレートしたいとしますか?

+0

イベントオブジェクトのプロパティは変更しません。イベント自体を最初に初期化したときにプロパティの値で初期化する必要があります。例えばe = document.createEvent( "UIEvent"); e.initMouseEvent(...)。さらに、イベントは、要素だけでなく、任意のノードまたは抽象ビュー(例えば、文書、ウィンドウ)上で動作する。 –

+0

@Eli Grey:これは私がここで言っていることです。あなたはそれらを変更しません。しかし、OPがやりたいことをしようとすると、あなたはする必要があります。あなたの2番目のものは少し不確かなようです:あなたは 'Event'を何か他のものに登録することはできませんし、' Element'(または例外を除いて 'AbstractView')やディスパッチすることはできません。 – FK82

+0

capyberaやselinumのようなものは、マウスイベントをブラウザでどのように登録しますか? – austinbv

-1

jQueryとDojoを参照してください。あるいは、jsfiddleサイトに行って見てみることもできます。彼らには一連のライブラリがあり、ライブラリをダウンロードせずにオンラインでテストすることができます。

+1

正しいタイプのテストは考えていません – austinbv

0

ジャスミンとjQueryを使用してマウスイベントを必要とするコードを正常にテストしました。

http://api.jquery.com/category/events/event-object/

だけ作成し、このようなトリガーイベント:

// Create a new jQuery.Event object with specified event properties. 
    var e = jQuery.Event("keydown", { keyCode: 64 }); 

    // trigger an artificial keydown event with keyCode 64 
    jQuery("body").trigger(e); 

は、[プロパティ]をチェックするためにジャスミンを使用しています。アニメーションをチェックする必要がある場合 だけのノートとして、あなたはこのように時間を模擬することができます

//http://groups.google.com/group/jasmine-js/browse_thread/thread/dbdc5ad1c1514322

beforeEach(function() { 
    jasmine.Clock.useMock(); 
}); 
//... call the code that calls setTimeout 
jasmine.Clock.tick(500); // advance 500 msec 
2

この問題の唯一の良い解決策は、DOH Robotです。 Javaアプレットを実行し、実際のjavascriptイベントを発生させ、実際のユーザーの動作(ドラッグ&ドロップテストを含む)をエミュレートします。

DOHはdojoに依存しないため、どのプロジェクトでも使用できます。残念ながら、それは本当にクールなテストフレームワークですが、広く使われていません。

関連する問題