SlideShare uma empresa Scribd logo
1 de 18
中村 久司
@martini3oz


  Ext JSのアプリを
 Siestaでテストする
Siestaとは
JavaScriptテストフレームワーク

Liteバージョンは無料で使える

Standardバージョンになるとheadlessテストができる

Ext JSで開発されている

ユーザーの操作をシミュレートできる

Bryntumの製品
Bryntum社
スウェーデンの企業

Ext Scheduler / Ext Gantt などの製品
Siestaの設置
 MVCアプリケーション




 Siestaの本体
               {
 テストメイン
 個々のテスト

             今回のサンプルでの構成は少し違う
test_harness.html
 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css"/>
 5         <link rel="stylesheet" type="text/css" href="../siesta/resources/css/siesta-
all.css">
 6
 7         <script type="text/javascript" src="../extjs/ext-all.js"></script>
 8         <script type="text/javascript" src="../siesta/siesta-all.js"></script>
 9
10         <script type="text/javascript" src="test_harness.js"></script>
11     </head>
12
13     <body>
14     </body>
15 </html>


   siesta-all.cssの読み込み
   siesta-all.jsの読み込み
   test_harness.jsの読み込み
Harness
ハーネスはダッシュボードの一種で、各テストの環境をセッ

トアップしテストの結果を収集します。
test_harness.js
 1 var Harness = Siesta.Harness.Browser.ExtJS;
 2
 3 Harness.configure({                              loaderPath
 4     title       : 'MVC Test Suite',
 5     loaderPath : { 'EX' : 'app' },
 6
 7     autoCheckGlobals: true,
 8     expectedGlobals : [ 'Ext', 'EX' ],         グローバル変数のチェック
 9
10     preload : [
11        "../extjs/resources/css/ext-all.css",
12        "../extjs/ext-all-debug.js"             テストページにロードしてお
13     ]
14
15 });                                            くファイル


  Siesta.Harness.Browser.ExtJS
  ハーネスの設定
test_harness.js
 Harness.startメソッドにテストファイル名を渡す

 ファイル名は複数指定可能
 Harness.start('testA.js', 'testB.js');



 オブジェクトを渡すことでグループ化もできる
 17 Harness.start({
 18     group: 'Sanity',
 19     items: [
 20         'tests/sanity/sanity.t.js'
 21     ]
 22 },{
 23     group: 'Model',
 24     items: [
 25         'tests/model/employee.t.js',
 26         'tests/model/department.t.js'
テストを書く
StartTest(startTestも可)関数に関数オブジェクトを渡す。

その関数オブジェクトの中にテストを書く。

関数オブジェクトに渡される引数はSiesta.Testのインスタン
ス。
1 StartTest(function(t) {
2     t.diag("基本的なテスト");
3       t.ok(Ext, 'ExtJS 確認');
4 });
Siesta.Test
 アサーションメソッドが多数装備されている
  t.ok
  t.notOk
  t.pass
  t.isGrater
  t.isGraterOrEqual
  t.isLess
  t.isLessOrEqual
  t.diag
テストの実行
             ②実行ボタンを押す




①実行するテストに
チェックを入れる    ③テストの結果が表示される
Model
     単体でのテストが最もしやすいのがモデルです・

 1 StartTest(function(t) {
 2     t.diag('Depertment Model');
 3     t.requireOk('EX.model.Department', function() {
 4         var dept = '開発部', mod;
 5
 6           mod = Ext.create('EX.model.Department', {
 7               name: dept
 8           });
 9           t.is(mod.get('name'), dept, 'nameフィールド読み出しOK');
10
11     });
12 });
Model
 1 StartTest(function(t) {
 2     t.diag('Employee Model');
 3     var rec = {
 4         name: '鬼瓦 権三',
 5          department_id: 1,
 6          email: 'gonzo@onigawara.com',
 7          gender: '男',
 8          age: 33
 9     };
10
11     t.requireOk('EX.model.Employee', function() {
12         var mod = Ext.create('EX.model.Employee', rec);
13
14          t.is(mod.genderEn(), 'male', 'genderEn 動作OK');
15          Ext.iterate(rec, function(key, value) {
16              t.is(mod.get(key), value, key + 'フィールド読み出しok');
17         });
18     });
19 });
Model(Store)
Storeのテストで実際にデータを読み込む

loadメソッドのテストでは非同期呼び出しになる

beginAsync / endAsync による方法

chainによる方法
Model(Store)
beginAsync/endAsyncでの非同期テスト
 8 function() {
 9     var s = Ext.create('EX.store.Employees'),
10         // 非同期処理の開始
11           async = t.beginAsync();
12
13     s.load({
14         callback: function() {
15              var c, m;
16
17               // 非同期処理の完了
18               t.endAsync(async);
19               t.pass('loaded');
                   :
                   :
24           }
25     });
26 }
Model(Store)
chainメソッドによるテスト

chainでは関数をどんどん繋げて実行できる
 10 t.chain(
 11     function (next) {
 12          s.load({
 13                callback: function() {
 14                    next();
 15                }
 16          });
 17     },
 18     function (next) {
 19          var c,m;
 20
 21          t.pass('loaded');
                 :
                 :
 27     }
 28 );
Model/View
ViewのテストはModelとの結合テスト

waitForXXメソッド
   t.waitForViewRendered('mylist dataview', function () {
       t.pass('mylist が描画されました');
   });
chainの中でリテラルでも使用可能
   7 t.chain({
   8      waitFor: 'rowsVisible',
   9      args: [grid]
  10 }, {
Model/View
Viewの場合はユーザー操作のシミュレートができる

click, typeなどの操作をシミュレートする

clickメソッド、typeメソッドなど、Siesta.Test.Simulate以下
のクラスのメソッドを呼び出す。
test.type(el, ‘abc’);
アクションコンフィグオブジェクトで指定する。
{
  action: ‘click’,
  target: el
}

Mais conteúdo relacionado

Mais procurados

Perlのテストがわからない
PerlのテストがわからないPerlのテストがわからない
Perlのテストがわからない
Yusuke Hosokoshi
 
Androidでテストってどないすんねん!
Androidでテストってどないすんねん!Androidでテストってどないすんねん!
Androidでテストってどないすんねん!
akimichi Yamada
 
Unit testで定時帰宅!
Unit testで定時帰宅!Unit testで定時帰宅!
Unit testで定時帰宅!
Funato Takashi
 
Hilを使った形式リアルタイム検証
Hilを使った形式リアルタイム検証Hilを使った形式リアルタイム検証
Hilを使った形式リアルタイム検証
Toshiyuki Fujikura
 
Nose 鼻をきかせてテストせよ
Nose  鼻をきかせてテストせよNose  鼻をきかせてテストせよ
Nose 鼻をきかせてテストせよ
Atsushi Odagiri
 
Introduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodIntroduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGood
Atsuhiro Kubo
 

Mais procurados (20)

Perlのテストがわからない
PerlのテストがわからないPerlのテストがわからない
Perlのテストがわからない
 
Androidでテストってどないすんねん!
Androidでテストってどないすんねん!Androidでテストってどないすんねん!
Androidでテストってどないすんねん!
 
xUnit Test Patterns - Chapter19
xUnit Test Patterns - Chapter19xUnit Test Patterns - Chapter19
xUnit Test Patterns - Chapter19
 
Unit testing JavaScript with JUnit/JavaFX
Unit testing JavaScript with JUnit/JavaFXUnit testing JavaScript with JUnit/JavaFX
Unit testing JavaScript with JUnit/JavaFX
 
Laravel勉強会(データベーステスト編)
Laravel勉強会(データベーステスト編)Laravel勉強会(データベーステスト編)
Laravel勉強会(データベーステスト編)
 
Scene BuilderでFXML
Scene BuilderでFXMLScene BuilderでFXML
Scene BuilderでFXML
 
Unit test in android
Unit test in androidUnit test in android
Unit test in android
 
Javascript basic code
Javascript basic codeJavascript basic code
Javascript basic code
 
Unit testで定時帰宅!
Unit testで定時帰宅!Unit testで定時帰宅!
Unit testで定時帰宅!
 
From Swing to JavaFX - SwingからJavaFXへのマイグレーションガイド
From Swing to JavaFX  - SwingからJavaFXへのマイグレーションガイドFrom Swing to JavaFX  - SwingからJavaFXへのマイグレーションガイド
From Swing to JavaFX - SwingからJavaFXへのマイグレーションガイド
 
テスト事始め phpblt #3
テスト事始め phpblt #3テスト事始め phpblt #3
テスト事始め phpblt #3
 
Hilを使った形式リアルタイム検証
Hilを使った形式リアルタイム検証Hilを使った形式リアルタイム検証
Hilを使った形式リアルタイム検証
 
Akka Unit Testing
Akka Unit TestingAkka Unit Testing
Akka Unit Testing
 
Nose 鼻をきかせてテストせよ
Nose  鼻をきかせてテストせよNose  鼻をきかせてテストせよ
Nose 鼻をきかせてテストせよ
 
Beyond JUnit3
Beyond JUnit3Beyond JUnit3
Beyond JUnit3
 
CakeRequest::onlyAllow() について
CakeRequest::onlyAllow() についてCakeRequest::onlyAllow() について
CakeRequest::onlyAllow() について
 
xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16
 
Introduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodIntroduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGood
 
HeapStats(Java解析ツールバトル)
HeapStats(Java解析ツールバトル)HeapStats(Java解析ツールバトル)
HeapStats(Java解析ツールバトル)
 
20090212
2009021220090212
20090212
 

Destaque

Destaque (20)

Sencha フレームワークの統合開発ツール Sencha Cmd
Sencha フレームワークの統合開発ツール Sencha CmdSencha フレームワークの統合開発ツール Sencha Cmd
Sencha フレームワークの統合開発ツール Sencha Cmd
 
なぜユニットテストの実践が難しい
なぜユニットテストの実践が難しいなぜユニットテストの実践が難しい
なぜユニットテストの実践が難しい
 
なぜ Enterprise は Sencha を選ぶのか?
なぜ Enterprise は Sencha を選ぶのか?なぜ Enterprise は Sencha を選ぶのか?
なぜ Enterprise は Sencha を選ぶのか?
 
Xamarin を使うとどんなことができるの?
Xamarin を使うとどんなことができるの?Xamarin を使うとどんなことができるの?
Xamarin を使うとどんなことができるの?
 
Ext JS version 5 を始めよう
Ext JS version 5 を始めようExt JS version 5 を始めよう
Ext JS version 5 を始めよう
 
Windows Phone / iOS / Android アプリ同時開発のススメ
Windows Phone / iOS / Android アプリ同時開発のススメWindows Phone / iOS / Android アプリ同時開発のススメ
Windows Phone / iOS / Android アプリ同時開発のススメ
 
Sencha のフレームワーク Ext JS 5 について 15 分で説明するよ
Sencha のフレームワーク Ext JS 5 について 15 分で説明するよSencha のフレームワーク Ext JS 5 について 15 分で説明するよ
Sencha のフレームワーク Ext JS 5 について 15 分で説明するよ
 
Xamarin 概要
Xamarin 概要Xamarin 概要
Xamarin 概要
 
UnitTest
UnitTestUnitTest
UnitTest
 
SQLアンチパターン「ディプロマティック・イミュニティ」
SQLアンチパターン「ディプロマティック・イミュニティ」SQLアンチパターン「ディプロマティック・イミュニティ」
SQLアンチパターン「ディプロマティック・イミュニティ」
 
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
サイボウズがWebアプリ自動テスト に活用しているossツールの紹介
 
Xamarin 概要 2017/01/15
Xamarin 概要 2017/01/15Xamarin 概要 2017/01/15
Xamarin 概要 2017/01/15
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
 
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメXamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
 
Xamarinの歩き方
Xamarinの歩き方Xamarinの歩き方
Xamarinの歩き方
 
TDDの自殺 #TDDeX
TDDの自殺 #TDDeXTDDの自殺 #TDDeX
TDDの自殺 #TDDeX
 
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsider
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsiderMoq & Fakes Framework を使った実践的ユニットテスト - BuildInsider
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsider
 
最近の単体テスト
最近の単体テスト最近の単体テスト
最近の単体テスト
 
詳解!自動結合テスト #jasst
詳解!自動結合テスト #jasst詳解!自動結合テスト #jasst
詳解!自動結合テスト #jasst
 
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
TDD BootCamp in JJUG CCC - レガシーコード対策編 -TDD BootCamp in JJUG CCC - レガシーコード対策編 -
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
 

Semelhante a Sencha ug3 siesta_share

エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
Ayumi Goto
 
Effective java 勉強会
Effective java 勉強会Effective java 勉強会
Effective java 勉強会
Takinami Kei
 
Tokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストTokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテスト
Yohei Sato
 
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
Yuki Takei
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
Kazunari Hara
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
 

Semelhante a Sencha ug3 siesta_share (20)

Junit4
Junit4Junit4
Junit4
 
Apache Wicketのユニットテスト機能
Apache Wicketのユニットテスト機能Apache Wicketのユニットテスト機能
Apache Wicketのユニットテスト機能
 
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめTypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
 
XunitとMoq 公開用
XunitとMoq 公開用XunitとMoq 公開用
XunitとMoq 公開用
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
 
Ruby test double
Ruby test doubleRuby test double
Ruby test double
 
traceur-compilerで ECMAScript6を体験
traceur-compilerで ECMAScript6を体験traceur-compilerで ECMAScript6を体験
traceur-compilerで ECMAScript6を体験
 
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_cccJEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
 
Ajax 応用
Ajax 応用Ajax 応用
Ajax 応用
 
Effective java 勉強会
Effective java 勉強会Effective java 勉強会
Effective java 勉強会
 
Tokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストTokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテスト
 
Apache Torqueについて
Apache TorqueについてApache Torqueについて
Apache Torqueについて
 
StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践
 
マーブル図で怖くないRxJS
マーブル図で怖くないRxJSマーブル図で怖くないRxJS
マーブル図で怖くないRxJS
 
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
Implementation patterns
Implementation patternsImplementation patterns
Implementation patterns
 
JavaScript/CSS 2015 Autumn
JavaScript/CSS 2015 AutumnJavaScript/CSS 2015 Autumn
JavaScript/CSS 2015 Autumn
 
Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方
 

Mais de 久司 中村

Introducing Sencha Space
Introducing Sencha SpaceIntroducing Sencha Space
Introducing Sencha Space
久司 中村
 

Mais de 久司 中村 (8)

アラカンエンジニアがたどり着いた生き方
アラカンエンジニアがたどり着いた生き方アラカンエンジニアがたどり着いた生き方
アラカンエンジニアがたどり着いた生き方
 
Web業務アプリの新しい潮流
Web業務アプリの新しい潮流Web業務アプリの新しい潮流
Web業務アプリの新しい潮流
 
AWSとSenchaでSecureなモバイルアプリを実現する
AWSとSenchaでSecureなモバイルアプリを実現するAWSとSenchaでSecureなモバイルアプリを実現する
AWSとSenchaでSecureなモバイルアプリを実現する
 
PHP と Sencha Ext.Direct
PHP と Sencha Ext.DirectPHP と Sencha Ext.Direct
PHP と Sencha Ext.Direct
 
Introducing Sencha Space
Introducing Sencha SpaceIntroducing Sencha Space
Introducing Sencha Space
 
Ext Schedulerを使ってみる
Ext Schedulerを使ってみるExt Schedulerを使ってみる
Ext Schedulerを使ってみる
 
Sencha Touch working with AWS
Sencha Touch working with AWSSencha Touch working with AWS
Sencha Touch working with AWS
 
Using Ext Direct with SenchaTouch2
Using Ext Direct with SenchaTouch2Using Ext Direct with SenchaTouch2
Using Ext Direct with SenchaTouch2
 

Último

Último (7)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

Sencha ug3 siesta_share

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n