1

このような単一ページのデモがいくつかあります: http://notjs.org/examples/forms/formmode_demo.html

私の既存の mocha chai badness セットアップでいくつかのテストを記述して、例を次のように直接テストできれば、すごいと思いました。

        example = 'forms/formmode_demo.html'

        describe "examples/#{example}", () ->
          before (done) ->
            loadExample example, () => done()

          it 'should load in full input mode', () ->
            window.$('input').length.should.equal 2

          describe "in full input mode", () ->
            it 'should have visible save', () ->
              window.$('button.success').is(':visible').should.be.true
            it 'should have visible cancel', () ->
              window.$('button.cancel').is(':visible').should.be.true
            it 'should not have put inputs on readonly class elements', ()->
              window.$('.readonly input').length.should.equal 0
            it 'should have input with author name', () ->
              window.$("[data-not_attr='name'] input:text").val().should.equal window.dataObject.name

それができれば、「あなたの例 x は数か月前に機能しなくなった」という恥ずかしい瞬間に苦しむことはありません。

私はそれを動作させましたが、http://urls から src されたページのスクリプト タグのみを使用しました。テストの前にパッケージをサーバーにデプロイする必要がある場合、テストはそれほど効果的ではありません。

サンプル ページは jquery、underscore、および notjs をロードし、スタンドアロン デモとして機能するために必要です。また、ローカル ファイル システムから相対 URL を使用して機能する必要があります。私はもともと、ページ上のnotjsスクリプトタグが相対パスを指すようにしていました。

    <script src="../../notjs.basics.js"></script>

それ以外の

    <script src="http://notjs.org/notjs.basics.js"></script>

しかし、notjs.basics.js はロードされず (window.Notjs == テストでは未定義)、jsdom からのエラーは表示されません。documentRoot jsdom オプションを設定しようとしましたが、うまくいかないようです。

参考までに、loadExample メソッドと残りの jsdom セットアップはこちら: https://github.com/bee-hub/notjs/blob/master/test/testHelper.coffee

助けと提案をありがとう。

4

1 に答える 1

1

私が見ることができる場所には文書化されていませんが、jsdom のバージョン 0.8.4 の test/jsdom/index.js の testLocal() 関数は、jsdom.jsdom(…) に「url」オプションを提供します。 documentRoot オプションに期待するのと同じ目標です。これを使用して、ローカル ファイル システム上の HTML ドキュメントからの相対スクリプト ソース パスを解決できます。

価値があるのは、「documentRoot」もドキュメントに記載されていないことです。その使用はgithub issueで逸話的に承認されているため、以前のバージョンでは機能していた可能性があります。

jsdom.jsdom(…) はスクリプトを非同期的にロードすることを忘れないでください。そのため、テストをドキュメント準備完了イベントに必ず関連付けてください。

幸運を!

于 2013-09-12T16:29:37.063 に答える