Hatena::ブログ(Diary)

gan2 の Ruby 勉強日記 このページをアンテナに追加 RSSフィード

この日記のはてなブックマーク数 PV/ 1638068 Subscribe with livedoor Reader 役立つリンク集

2012-05-26

[js] JsTestDriver が動かない…

「テスト駆動 JavaScript」を買ったので読んでいるのだけど、この本を通して使う JsTestDriver が動かなくて困っている。


セットアップは問題なく終わっていて、テストファイルを必要としない状態では問題なく動作する。

$ java -jar ~/bin/JsTestDriver-1.2.1.jar --port 4224

でも肝心のテストファイルを必要とする場合は動かない!

java.net.ConnectionException: Connection refused」って例外が出る。

これじゃテストにはまるっきり使えないじゃないか…。

$ java -jar ~/bin/JsTestDriver-1.2.1.jar --tests all
java.net.ConnectException: Connection refused
java.lang.RuntimeException: java.net.ConnectException: Connection refused
        at com.google.jstestdriver.HttpServer.fetch(Unknown Source)
        at com.google.jstestdriver.JsTestDriverClientImpl.listBrowsers(Unknown Source)
        at com.google.jstestdriver.ThreadedActionsRunner.run(Unknown Source)
        at com.google.jstestdriver.ActionRunner.runActions(Unknown Source)
        at com.google.jstestdriver.JsTestDriverServer.main(Unknown Source)
Caused by: java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
        at java.net.Socket.connect(Socket.java:529)
        at java.net.Socket.connect(Socket.java:478)
        at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:395)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:530)
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:234)
        at sun.net.www.http.HttpClient.New(HttpClient.java:307)
        at sun.net.www.http.HttpClient.New(HttpClient.java:324)
        at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:970)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911)
        at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836)
        at com.google.jstestdriver.HttpServer.fetch(Unknown Source)
        ... 4 more

公式の GettingStartedを見てみると、同じようにハマっている人がいた。

でもこれといった解決策が出てきていないみたい。

この本の原著が出たのは2009年で、当時の JsTestDriver のバージョンが 1.2.1。

2012年5月現在の最新バージョンは 1.3.4 で2年以上経っているので、こんなバグがずっと残っているとは考えづらい。

なにか見落としていると思うのだけど…。


追記

解決した!使い方を勘違いしていたみたい。

「--tests」がつくのとつかないのはどちらも実行させる必要がある。

「--tests」つかないのはブラウザをキャプチャできるかどうかの確認用だと思っていたけど違っていた。

どっちも動かさないといけない。ついてないのがサーバ起動用で、ついてる方がテストの実行用という役割みたい。

takafashitakafashi 2012/05/28 12:45 初めまして。
そのエラー、jsTestDriverのサーバにブラウザが1個も正常にアタッチできていないときに見ます。
http://jstestserverのアドレス:4224にアクセスして「Capture This Browser」をクリックしたのちに
緑色の画面表示と、サーバからのメッセージ表示が動作してますか?(こちらはwin上のchromeやFirefoxからアクセスしてます)

(見当違いだったらごめんなさい)

gan2gan2 2012/05/28 16:49 はじめまして!コメントありがとうございます。

「java -jar ~/bin/JsTestDriver-1.2.1.jar --port 4224」を実行して、
「http://localhost:4224」にアクセスし、「Capture This Browser」をクリックすると、
緑色の画面に「JsTestDriver」と表示されます。

「java -jar ~/bin/JsTestDriver-1.2.1.jar --tests all」を実行すると、
エントリ本文のようにエラーが表示され、サーバにアクセスすることができません。

こちらの環境は Mac OSX 上の Chrome です。
最初の --port を指定している方の結果から、ブラウザのアタッチは問題ないと思っています。

お気付きの点や、試した方がよい点などがありましたら、またコメント頂けると助かります!

takafashitakafashi 2012/05/28 23:16 なるほど。。うまく動いている感じですね。。。
自分がはまったのは、jsTestDriver.confのserver記述間違いと、winでのjsファイル文字コード問題ぐらいでした。

試しに、これ↓でテストできますでしょうか?
https://github.com/takafashi/tddjs
自宅のMacOS10.6 + jsTestDriver-1.2.1 + chromeで動いているソース(12章を途中まで)です。


あとは、アタッチしているchromeのデバッグツールを起動してみて、テストがserverからちゃんと送られているかチェックしたら何かわかるのかな・・うーんお役に立てず申し訳ないです!

gan2gan2 2012/05/28 23:26 度々ありがとうございます。

明日以降になってしまいますが、試させて頂きます。
そういえば、僕も Windows が手元にあるのでそっちでも試してみようと思います。

gan2gan2 2012/05/29 21:54 解決しました!
やっぱり僕がちゃんと把握できていなかったのが問題でした…。
サーバはサーバとして動かしておいて、テストは別で実行するのですね。
--tests all の方だけ実行すれば、サーバも動くのだと思っていました。
お騒がせしました。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/gan2/20120526/1337998447
リンク元