プログラマとプロマネのあいだ

プログラマもやるし、プロマネもやるし、たまに似非アーキとか営業っぽいこともやる

Sencha Touchのテストを動かしてみる。

sencha-touch-1.0.1/test/jasmine
に、SpecRunner.htmlが見つかるので、これを開いてみる。
すると、、真っ白い画面が表示されるだけで何も起こらない。。


コンソールログを見てみると、

Failed to load resource: the server responded with a status of 404 (Not Found)
jasmine.jsFailed to load resource: the server responded with a status of 404 (Not Found)
Spec.jsFailed to load resource: the server responded with a status of 404 (Not Found)
Reporter.jsFailed to load resource: the server responded with a status of 404 (Not Found)
...

という感じで全然ダメそうなので、htmlのソースを見てみると、

       <link rel="stylesheet" type="text/css" href="../../src/platform/test/jasmine/lib/reporter/resources/reporter.css" /> 
        <script type="text/javascript" src="../../src/platform/test/jasmine/lib/jasmine-1.0.1/jasmine.js"></script> 
        <script type="text/javascript" src="../../src/platform/test/jasmine/lib/reporter/src/Spec.js"></script> 
        <script type="text/javascript" src="../../src/platform/test/jasmine/lib/reporter/src/Reporter.js"></script> 

となっている。
../../src/platform/test
は、
sencha-touch-1.0.1/src/platform/test
なんですが、このディレクトリがない!


jasmine-standalone-1.0.1のSpecRunner.htmlを見ると、

...
  <link rel="stylesheet" type="text/css" href="lib/jasmine-1.0.1/jasmine.css">
  <script type="text/javascript" src="lib/jasmine-1.0.1/jasmine.js"></script>
  <script type="text/javascript" src="lib/jasmine-1.0.1/jasmine-html.js"></script>

  <!-- include source files here... -->
  <script type="text/javascript" src="src/Player.js"></script>
  <script type="text/javascript" src="src/Song.js"></script>

  <!-- include spec files here... -->
  <script type="text/javascript" src="spec/SpecHelper.js"></script>
  <script type="text/javascript" src="spec/PlayerSpec.js"></script>
...

ってな感じで、かなり違う。
Sencha Touchで使っているJasmineは、やや古いバージョンなのかも。


とりあえず、新しい方に合わせてみる。
まず、jasmine-standalone-1.0.1をフォルダごと、
sencha-touch-1.0.1/src/platform/test
にコピーして、jasmineに名前を変える。


sencha-touch-1.0.1/test/jasmine/SpecRunner.html
をコピーして、
sencha-touch-1.0.1/test/jasmine/SpecRunner2.html
を作り、以下のように書き換える。

SpecRunner2.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>Jasmine Test Runner - Sencha Touch</title>
<!--
        <link rel="stylesheet" type="text/css" href="../../src/platform/test/jasmine/lib/reporter/resources/reporter.css" />
        <script type="text/javascript" src="../../src/platform/test/jasmine/lib/jasmine-1.0.1/jasmine.js"></script>
        <script type="text/javascript" src="../../src/platform/test/jasmine/lib/reporter/src/Spec.js"></script>
        <script type="text/javascript" src="../../src/platform/test/jasmine/lib/reporter/src/Reporter.js"></script>
-->
        <link rel="stylesheet" type="text/css" href="../../src/platform/test/jasmine/lib/jasmine-1.0.1/jasmine.css">
        <script type="text/javascript" src="../../src/platform/test/jasmine/lib/jasmine-1.0.1/jasmine.js"></script>
        <script type="text/javascript" src="../../src/platform/test/jasmine/lib/jasmine-1.0.1/jasmine-html.js"></script>
        <!--
            Source files
        -->

        <!-- build: Sencha Touch -->
        <!-- package: Platform Util -->
        <script type="text/javascript" src="../../src/platform/src/Ext.js"></script>
        <script type="text/javascript" src="../../src/platform/src/util/Observable.js"></script>
        <script type="text/javascript" src="../../src/platform/src/util/Stateful.js"></script>

(中略)

        <script type="text/javascript" src="spec/widgets/form/Text.js"></script>
        <script type="text/javascript" src="spec/widgets/form/Toggle.js"></script>
        <script type="text/javascript" src="spec/widgets/form/Url.js"></script>

        <!-- Boot -->
        <script type="text/javascript">
                var config = {};

                if (!Ext.is.Desktop) {
                    config.fullscreen = true;
                }
                
                config.onReady = function() {
                    //jasmine.getEnv().addReporter(new SenchaReporter());
                    jasmine.getEnv().addReporter(new jasmine.TrivialReporter());
                    jasmine.getEnv().execute();
                }

                var eventSimulator = new Ext.util.EventSimulator();

                Ext.setup(config);
        </script>
        
    </head>

    <body>
    </body>


</html>

これで、

850 specs, 22 failures in 15.989s Finished at ...

とか表示されるので、一応実行できてるんだと思う。
環境の問題かも知れないけど、22個もパスしないテストケースがあるのかよ。。
※Sencha Touch 1.0.1aでやっても、同様の結果でした。