SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
QUnit 再入門
                (Version 1.10.0 編)




12年12月12日水曜日
自己紹介

               @kozy4324

               JS/AS3.0でフロントエンド開発

               最近はObjective-C



12年12月12日水曜日
QUnitとは?

               使い方(ミニマム)

               使い方(ケーススタディ)




12年12月12日水曜日
QUnitとは?

               使い方(ミニマム)

               使い方(ケーススタディ)




12年12月12日水曜日
http://qunitjs.com/

12年12月12日水曜日
QUnitとは?
               JavaScriptのユニットテスティン
               グフレームワーク

               jQueryの開発に利用されている

               MITライセンス


12年12月12日水曜日
特徴
               シンプルなAPI
               Webブラウザ上で動くJSがメイン
               ターゲット
                HTMLレポート
                非同期処理テストのサポート
                DOM fixture
               Node.jsやRhino上でも動く
12年12月12日水曜日
QUnitとは?

               使い方(ミニマム)

               使い方(ケーススタディ)




12年12月12日水曜日
前準備
               HTMLを作成
               qunit.jsとqunit.cssを読み込む
               テスト対象のjsを読み込む
               テストコードのjsを読み込む
               id="qunit"の要素を追加

12年12月12日水曜日
サンプルHTML
          <!DOCTYPE html>
          <html>
          <head>                       titileは任意だが設定推奨
            <meta charset="utf-8">     テスト結果のマークを付与してくれる
            <title>QUnit Example</title>
            <link rel="stylesheet" href="qunit-1.10.0.css">
            <script src="qunit-1.10.0.js"></script>
            <script src="MyClass.js"></script>
            <script src="MyClassTest.js"></script>
          </head>
          <body>
            <div id="qunit"></div>
          </body>          テスト結果がこの要素に出力される
          </html>




12年12月12日水曜日
API(ミニマム)
               test()
               Assert
                 ok()
                 equal(), notEqual()
                 deepEqual(), notDeepEqual()
                 strictEqual(), notStrictEqual()

12年12月12日水曜日
これだけ知ってれば
                テスト書けます



12年12月12日水曜日
書いてみる
          test("第1引数にtest名を記述", function() {
               var result = myFunc1();
               ok(result, "resultがtrueでテストをパス");
          });

          test("論理的な単位でテストをまとめるとよい", function() {
               var result = myFunc2();
               equal(result, "hoge", "2値の比較はequalを利用");
          });

          test("オブジェクトの比較はdeepEqual()", function() {
               var obj = myFunc3();
               deepEqual(obj, {a:1, b:{c:1}}, "再帰的にチェック可能");
          });


12年12月12日水曜日
equal()とstrictEqual()


               equal()は「==」で比較

               strictEqual()は「===」で比較

               JSで 1 == "1" は true なのよ



12年12月12日水曜日
QUnitとは?

               使い方(ミニマム)

               使い方(ケーススタディ)




12年12月12日水曜日
Q. 共通処理をまとめたい

          test("test 1", function() {
            var myInstance = new MyClass();
            equal(myInstance.getHoge(), "hoge");
          });

          test("test 2", function() {
            var myInstance = new MyClass();
            equal(myInstance.getFoo(), "foo");
          });

          test("test 3", function() {
            var myInstance = new MyClass();
            equal(myInstance.getBar(), "bar");
          });




12年12月12日水曜日
A. module()とsetup/teardown
          module("module A", {
            setup: function() {
              this.myInstance = new MyClass();
            }
          });

          test("test 1", function() {
            equal(this.myInstance.getHoge(), "hoge");
          });

          test("test 2", function() {
            equal(this.myInstance.getFoo(), "foo");
          });

          test("test 3", function() {
            equal(this.myInstance.getBar(), "bar");
          });


12年12月12日水曜日
Q. Assert回数をチェックしたい


          test("test 1", function() {
            // myMethodはコールバック関数を受け取る
               myMethod(function() {
                 ok(true);
               });

               // コールバック関数が実行されないとこのテストはパスする
               // コールバックされたことをテストしたい...
          });




12年12月12日水曜日
A. expect()

          test("test 1", function() {
            expect(1);
            myMethod(function() {
              ok(true);
            });
            // Assertされないとfail
          });

          test("test 2", 1, function() {
            myMethod(function() {
              ok(true);
            });
            // test()の第2引数にも指定できる
          });



12年12月12日水曜日
Q. 例外の振る舞いをチェックしたい




          test("test 1", function() {
            myFunc();
            // myFunc()が例外をthrowするかどうか
               // どう書く...?
          });




12年12月12日水曜日
A. throws()

          test("test 1", function() {
            throws(function() {
               myMethod();
            },
            "myMethodが例外をthrowするとこのテストはパスする");
          });

          test("test 1", function() {
            throws(function() {
               throw new CustomError()
            },
            CustomError, // 第2引数にはErrorクラス or RegExp
               "throwされる例外の型や含まれるメッセージでもテスト可能");
          });



12年12月12日水曜日
Q. 非同期処理のテストがしたい

          test("test 1", function() {
            expect(1);
            jQuery.get("data.json", function(data) {
              equal(data.hoge, "hoge");
            });
          });

          test("test 2", function() {
            ok(true);
          });

          // このテストは正しく実行されない
          // "test 1"のAssertが実行される前に"test 2"が開始される...




12年12月12日水曜日
A. start(), stop()
          test("test 1", function() {
            expect(1);
            jQuery.get("data.json", function(data) {
              equal(data.hoge, "hoge");
              start(); // start()で次テスト実行が開始される
               });
               stop(); // stop()で次テスト実行が保留される
          });

          asyncTest("test 2", function() {
            expect(1);
            jQuery.get("data.json", function(data) {
              equal(data.hoge, "hoge");
              start();
            });
            // asyncTestにするとstop()を省略できる
          });

12年12月12日水曜日
Q. テスト毎にDOMクリアしたい

          test("test 1", function() {
            document.getElementById("div").innerHTML = html;
            // テスト...
          });

          test("test 2", function() {
            document.getElementById("div").innerHTML = html;
            // テスト...
          });

          test("test 3", function() {
            document.getElementById("div").innerHTML = html;
            // テスト...
          });



12年12月12日水曜日
A. id="qunit-fixture"な要素を
                 利用すると幸せになれる
      /**
       * id="qunit-fixture"の要素はテスト毎に復元される
        * (config.fixtureに復元用のinnerHTMLが保持される)
       */
      test("test 1", function() {
        document.getElementById("qunit-fixture").innerHTML = "hi";
        notEqual(
          document.getElementById("qunit-fixture").innerHTML,
          QUnit.config.fixture);
      });

      test("test 2", function() {
        equal(
          document.getElementById("qunit-fixture").innerHTML,
          QUnit.config.fixture);
      });


12年12月12日水曜日
Q. 特定のテストだけ実行したい




12年12月12日水曜日
A. HTMLレポート画面から
               特定テスト実行の操作が可能



                                  モジュール毎の
                                  絞り込み実行が可能




                         カラムダブルクリックで
                         該当テストのみ再実行




12年12月12日水曜日
Q. 変数のグローバル汚染を
                   検出したい




12年12月12日水曜日
A. 変数グローバル汚染
               チェックモードがある
                    選択するとテスト再実行
                    汚染があれば該当テストがfailする




12年12月12日水曜日
Q. Mockを利用した
               振る舞いのテストをしたい




12年12月12日水曜日
A. Sinon.JSのsinon-qunitを利用
               (別プロダクトなので説明割愛)




12年12月12日水曜日
おまけ API変更点
               Assert API
                CommonJS Unit Testing互換に
                  equals → equal
                  same → deepEqual
                  raises → throws
               Assertのスコープ
                推奨はtestコールバックの引数
                test("test", function(assert) {
                  assert.ok(ok);
                });

12年12月12日水曜日
Let's QUnit !!!


12年12月12日水曜日

Weitere ähnliche Inhalte

Was ist angesagt?

Layout analyzerでのgroovyの利用について
Layout analyzerでのgroovyの利用についてLayout analyzerでのgroovyの利用について
Layout analyzerでのgroovyの利用について
kimukou_26 Kimukou
 
Javaセキュアコーディングセミナー東京第1回 講義
Javaセキュアコーディングセミナー東京第1回 講義Javaセキュアコーディングセミナー東京第1回 講義
Javaセキュアコーディングセミナー東京第1回 講義
JPCERT Coordination Center
 
明日から使える Java SE 7
明日から使える Java SE 7明日から使える Java SE 7
明日から使える Java SE 7
Yuichi Sakuraba
 
PerlとSQLのいろいろ
PerlとSQLのいろいろPerlとSQLのいろいろ
PerlとSQLのいろいろ
Takuya Tsuchida
 
HTMLの要素の選び方
HTMLの要素の選び方HTMLの要素の選び方
HTMLの要素の選び方
TENTO_slide
 
PFDS 10.2.1 lists with efficient catenation
PFDS 10.2.1 lists with efficient catenationPFDS 10.2.1 lists with efficient catenation
PFDS 10.2.1 lists with efficient catenation
昌平 村山
 
Javaセキュアコーディングセミナー東京第4回演習の解説
Javaセキュアコーディングセミナー東京第4回演習の解説Javaセキュアコーディングセミナー東京第4回演習の解説
Javaセキュアコーディングセミナー東京第4回演習の解説
JPCERT Coordination Center
 

Was ist angesagt? (20)

TDDワークショップ(第2回)
TDDワークショップ(第2回)TDDワークショップ(第2回)
TDDワークショップ(第2回)
 
xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16
 
Layout analyzerでのgroovyの利用について
Layout analyzerでのgroovyの利用についてLayout analyzerでのgroovyの利用について
Layout analyzerでのgroovyの利用について
 
xUTP Chapter26. Dependency Injection
xUTP Chapter26. Dependency InjectionxUTP Chapter26. Dependency Injection
xUTP Chapter26. Dependency Injection
 
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
 
Javaセキュアコーディングセミナー東京第1回 講義
Javaセキュアコーディングセミナー東京第1回 講義Javaセキュアコーディングセミナー東京第1回 講義
Javaセキュアコーディングセミナー東京第1回 講義
 
明日から使える Java SE 7
明日から使える Java SE 7明日から使える Java SE 7
明日から使える Java SE 7
 
OSC京都2011
OSC京都2011OSC京都2011
OSC京都2011
 
Inside Frontend 2 #insideFE
Inside Frontend 2 #insideFEInside Frontend 2 #insideFE
Inside Frontend 2 #insideFE
 
PerlとSQLのいろいろ
PerlとSQLのいろいろPerlとSQLのいろいろ
PerlとSQLのいろいろ
 
HTMLの要素の選び方
HTMLの要素の選び方HTMLの要素の選び方
HTMLの要素の選び方
 
PFDS 10.2.1 lists with efficient catenation
PFDS 10.2.1 lists with efficient catenationPFDS 10.2.1 lists with efficient catenation
PFDS 10.2.1 lists with efficient catenation
 
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
 
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
 
Introduction to JShell #JavaDayTokyo #jdt_jshell
Introduction to JShell #JavaDayTokyo #jdt_jshellIntroduction to JShell #JavaDayTokyo #jdt_jshell
Introduction to JShell #JavaDayTokyo #jdt_jshell
 
TDD
TDDTDD
TDD
 
JJUG CCC 2012 Real World Groovy/Grails
JJUG CCC 2012 Real World Groovy/GrailsJJUG CCC 2012 Real World Groovy/Grails
JJUG CCC 2012 Real World Groovy/Grails
 
Javaセキュアコーディングセミナー東京第4回演習の解説
Javaセキュアコーディングセミナー東京第4回演習の解説Javaセキュアコーディングセミナー東京第4回演習の解説
Javaセキュアコーディングセミナー東京第4回演習の解説
 
Keep yourself up to date
Keep yourself up to dateKeep yourself up to date
Keep yourself up to date
 
Laravel勉強会(データベーステスト編)
Laravel勉強会(データベーステスト編)Laravel勉強会(データベーステスト編)
Laravel勉強会(データベーステスト編)
 

Ähnlich wie Qunit再入門 (Version 1.10.0 編)

JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所
Koji Nakamura
 
Ruby初級者向けレッスン 第46回 ─── Test::Unit
Ruby初級者向けレッスン 第46回 ─── Test::UnitRuby初級者向けレッスン 第46回 ─── Test::Unit
Ruby初級者向けレッスン 第46回 ─── Test::Unit
higaki
 
About func unit
About func unitAbout func unit
About func unit
gray Space
 
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)
Takuya Tsuchida
 
ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3
Tomoyuki Sato
 
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
 
大(中)規模Java script開発について
大(中)規模Java script開発について大(中)規模Java script開発について
大(中)規模Java script開発について
Yuki Tanaka
 
Tokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストTokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテスト
Yohei Sato
 
関西Php勉強会のlimeの話
関西Php勉強会のlimeの話関西Php勉強会のlimeの話
関西Php勉強会のlimeの話
Hisateru Tanaka
 

Ähnlich wie Qunit再入門 (Version 1.10.0 編) (20)

JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所
 
Junit4
Junit4Junit4
Junit4
 
ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9
ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9
ViewModel テスト難しすぎ問題 by saiki iijima in Android Test Night #9
 
Ruby初級者向けレッスン 第46回 ─── Test::Unit
Ruby初級者向けレッスン 第46回 ─── Test::UnitRuby初級者向けレッスン 第46回 ─── Test::Unit
Ruby初級者向けレッスン 第46回 ─── Test::Unit
 
Sencha ug3 siesta_share
Sencha ug3 siesta_shareSencha ug3 siesta_share
Sencha ug3 siesta_share
 
Unit testing JavaScript with JUnit/JavaFX
Unit testing JavaScript with JUnit/JavaFXUnit testing JavaScript with JUnit/JavaFX
Unit testing JavaScript with JUnit/JavaFX
 
第一回Miim勉強会
第一回Miim勉強会第一回Miim勉強会
第一回Miim勉強会
 
About func unit
About func unitAbout func unit
About func unit
 
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)
 
tdd4cpp demo
tdd4cpp demotdd4cpp demo
tdd4cpp demo
 
ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3
 
Xtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うXtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使う
 
20141129-dotNet2015
20141129-dotNet201520141129-dotNet2015
20141129-dotNet2015
 
Introduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGoodIntroduction to Continuous Test Runner MakeGood
Introduction to Continuous Test Runner MakeGood
 
大(中)規模Java script開発について
大(中)規模Java script開発について大(中)規模Java script開発について
大(中)規模Java script開発について
 
Tokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストTokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテスト
 
TDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaTDD勉強会キックオフ for Java
TDD勉強会キックオフ for Java
 
関西Php勉強会のlimeの話
関西Php勉強会のlimeの話関西Php勉強会のlimeの話
関西Php勉強会のlimeの話
 
CLRH_120414_WFTDD
CLRH_120414_WFTDDCLRH_120414_WFTDD
CLRH_120414_WFTDD
 
About Jobs
About JobsAbout Jobs
About Jobs
 

Qunit再入門 (Version 1.10.0 編)

  • 1. QUnit 再入門 (Version 1.10.0 編) 12年12月12日水曜日
  • 2. 自己紹介 @kozy4324 JS/AS3.0でフロントエンド開発 最近はObjective-C 12年12月12日水曜日
  • 3. QUnitとは? 使い方(ミニマム) 使い方(ケーススタディ) 12年12月12日水曜日
  • 4. QUnitとは? 使い方(ミニマム) 使い方(ケーススタディ) 12年12月12日水曜日
  • 6. QUnitとは? JavaScriptのユニットテスティン グフレームワーク jQueryの開発に利用されている MITライセンス 12年12月12日水曜日
  • 7. 特徴 シンプルなAPI Webブラウザ上で動くJSがメイン ターゲット HTMLレポート 非同期処理テストのサポート DOM fixture Node.jsやRhino上でも動く 12年12月12日水曜日
  • 8. QUnitとは? 使い方(ミニマム) 使い方(ケーススタディ) 12年12月12日水曜日
  • 9. 前準備 HTMLを作成 qunit.jsとqunit.cssを読み込む テスト対象のjsを読み込む テストコードのjsを読み込む id="qunit"の要素を追加 12年12月12日水曜日
  • 10. サンプルHTML <!DOCTYPE html> <html> <head> titileは任意だが設定推奨 <meta charset="utf-8"> テスト結果のマークを付与してくれる <title>QUnit Example</title> <link rel="stylesheet" href="qunit-1.10.0.css"> <script src="qunit-1.10.0.js"></script> <script src="MyClass.js"></script> <script src="MyClassTest.js"></script> </head> <body> <div id="qunit"></div> </body> テスト結果がこの要素に出力される </html> 12年12月12日水曜日
  • 11. API(ミニマム) test() Assert ok() equal(), notEqual() deepEqual(), notDeepEqual() strictEqual(), notStrictEqual() 12年12月12日水曜日
  • 12. これだけ知ってれば テスト書けます 12年12月12日水曜日
  • 13. 書いてみる test("第1引数にtest名を記述", function() { var result = myFunc1(); ok(result, "resultがtrueでテストをパス"); }); test("論理的な単位でテストをまとめるとよい", function() { var result = myFunc2(); equal(result, "hoge", "2値の比較はequalを利用"); }); test("オブジェクトの比較はdeepEqual()", function() { var obj = myFunc3(); deepEqual(obj, {a:1, b:{c:1}}, "再帰的にチェック可能"); }); 12年12月12日水曜日
  • 14. equal()とstrictEqual() equal()は「==」で比較 strictEqual()は「===」で比較 JSで 1 == "1" は true なのよ 12年12月12日水曜日
  • 15. QUnitとは? 使い方(ミニマム) 使い方(ケーススタディ) 12年12月12日水曜日
  • 16. Q. 共通処理をまとめたい test("test 1", function() { var myInstance = new MyClass(); equal(myInstance.getHoge(), "hoge"); }); test("test 2", function() { var myInstance = new MyClass(); equal(myInstance.getFoo(), "foo"); }); test("test 3", function() { var myInstance = new MyClass(); equal(myInstance.getBar(), "bar"); }); 12年12月12日水曜日
  • 17. A. module()とsetup/teardown module("module A", { setup: function() { this.myInstance = new MyClass(); } }); test("test 1", function() { equal(this.myInstance.getHoge(), "hoge"); }); test("test 2", function() { equal(this.myInstance.getFoo(), "foo"); }); test("test 3", function() { equal(this.myInstance.getBar(), "bar"); }); 12年12月12日水曜日
  • 18. Q. Assert回数をチェックしたい test("test 1", function() { // myMethodはコールバック関数を受け取る myMethod(function() { ok(true); }); // コールバック関数が実行されないとこのテストはパスする // コールバックされたことをテストしたい... }); 12年12月12日水曜日
  • 19. A. expect() test("test 1", function() { expect(1); myMethod(function() { ok(true); }); // Assertされないとfail }); test("test 2", 1, function() { myMethod(function() { ok(true); }); // test()の第2引数にも指定できる }); 12年12月12日水曜日
  • 20. Q. 例外の振る舞いをチェックしたい test("test 1", function() { myFunc(); // myFunc()が例外をthrowするかどうか // どう書く...? }); 12年12月12日水曜日
  • 21. A. throws() test("test 1", function() { throws(function() { myMethod(); }, "myMethodが例外をthrowするとこのテストはパスする"); }); test("test 1", function() { throws(function() { throw new CustomError() }, CustomError, // 第2引数にはErrorクラス or RegExp "throwされる例外の型や含まれるメッセージでもテスト可能"); }); 12年12月12日水曜日
  • 22. Q. 非同期処理のテストがしたい test("test 1", function() { expect(1); jQuery.get("data.json", function(data) { equal(data.hoge, "hoge"); }); }); test("test 2", function() { ok(true); }); // このテストは正しく実行されない // "test 1"のAssertが実行される前に"test 2"が開始される... 12年12月12日水曜日
  • 23. A. start(), stop() test("test 1", function() { expect(1); jQuery.get("data.json", function(data) { equal(data.hoge, "hoge"); start(); // start()で次テスト実行が開始される }); stop(); // stop()で次テスト実行が保留される }); asyncTest("test 2", function() { expect(1); jQuery.get("data.json", function(data) { equal(data.hoge, "hoge"); start(); }); // asyncTestにするとstop()を省略できる }); 12年12月12日水曜日
  • 24. Q. テスト毎にDOMクリアしたい test("test 1", function() { document.getElementById("div").innerHTML = html; // テスト... }); test("test 2", function() { document.getElementById("div").innerHTML = html; // テスト... }); test("test 3", function() { document.getElementById("div").innerHTML = html; // テスト... }); 12年12月12日水曜日
  • 25. A. id="qunit-fixture"な要素を 利用すると幸せになれる /** * id="qunit-fixture"の要素はテスト毎に復元される * (config.fixtureに復元用のinnerHTMLが保持される) */ test("test 1", function() { document.getElementById("qunit-fixture").innerHTML = "hi"; notEqual( document.getElementById("qunit-fixture").innerHTML, QUnit.config.fixture); }); test("test 2", function() { equal( document.getElementById("qunit-fixture").innerHTML, QUnit.config.fixture); }); 12年12月12日水曜日
  • 27. A. HTMLレポート画面から 特定テスト実行の操作が可能 モジュール毎の 絞り込み実行が可能 カラムダブルクリックで 該当テストのみ再実行 12年12月12日水曜日
  • 28. Q. 変数のグローバル汚染を 検出したい 12年12月12日水曜日
  • 29. A. 変数グローバル汚染 チェックモードがある 選択するとテスト再実行 汚染があれば該当テストがfailする 12年12月12日水曜日
  • 30. Q. Mockを利用した 振る舞いのテストをしたい 12年12月12日水曜日
  • 31. A. Sinon.JSのsinon-qunitを利用 (別プロダクトなので説明割愛) 12年12月12日水曜日
  • 32. おまけ API変更点 Assert API CommonJS Unit Testing互換に equals → equal same → deepEqual raises → throws Assertのスコープ 推奨はtestコールバックの引数 test("test", function(assert) { assert.ok(ok); }); 12年12月12日水曜日

Hinweis der Redaktion

  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
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n