4

モジュールがあり、mocha-phantomjs を使用してこのモジュールをテストしています。package.jsonファイルを作成しました

{
  "name"        : "demo-test",
  "scripts": {
    "test": "npm run test-debug",
    "test-debug": "mocha-phantomjs ./test/Test1.html"
  },
  "dependencies" : {
    "mocha"     : "1.13.x",
    "commander" : "1.2.x",
    "which"     : "~1.0.5",
    "mocha-phantomjs": "3.3.2"
  },
  "devDependencies" : {
    "chai"          : "1.8.x",
    "coffee-script" : "1.6.x",
    "requirejs"     : "2.1.x",
    "jquery"        : "2.1.0"
  }
}

次に、実行npm installnpm testてからテストを実行します。正常に動作し、のテストを実行しますtest1.html。ここで、test ディレクトリの下のすべてのファイル (test1、test2、...) が実行時に実行されるようにしますnpm test

package.json ファイルで個別に呼び出して、すべての html ファイルを実行できますが、すべての Html ファイルをロードする方法がある場合。

4

2 に答える 2

1

通常、スクリプト タグを使用して実行するすべてのテスト ファイルをロードするmocha- phantomjs ランナーにTests.htmlファイルを渡します。

Tests.htmlには以下が含まれます。

<script src="controller-tests/one-controller-test.js"></script>
<script src="controller-tests/another-controller-test.js"></script>
<script src="controller-tests/yet-another-controller-test.js"></script>
<script src="service-tests/one-service-test.js"></script>
<script src="service-tests/another-service-test.js"></script>
<script src="service-tests/yet-another-service-test.js"></script>

または、 RequireJSまたは別のAMDライブラリを使用している場合は、次のように、1 つのtest-init.jsファイルをロードし、そのファイル内で、すべてのテスト ファイルを個別に、またはネストした方法で require-in することができます。

Tests.html

<script src="test-init.js"></script>

test-init.js

require('controller-tests/init.js');
require('service-tests/init.js');

コントローラーテスト/init.js

require('one-controller-test.js');
require('another-controller-test.js');
require('yet-another-controller-test.js');

サービステスト/init.js

require('one-service-test.js');
require('another-service-test.js');
require('yet-another-service-test.js');
于 2014-10-14T04:42:28.430 に答える
0

私はダンアリに同意します。

同じブートローダーとテスト セットアップを使用します。

モカ BDD

おそらく、デフォルトでは、Mocha を「BDD」モードで実行すると、プロジェクトのルートにある「test」ディレクトリで html ファイルが検索されます。「test.html」という名前のファイルを探すことから始めます。「test/test.html」は、Mocha がフィクスチャ ファイルとして使用するデフォルトのパス ターゲットです。

RequireJS/AMDについて

クライアント側 (AMD) フレーバーの RequireJS に関しては、バイナリ ブランチ パターンを使用します。

-index.html
  |
  -/js/rjsMain.js
-test/test.html
  |
  -/js/rjsTest.js

RequireJS 構成セクションを新しいファイルに分割しました (私は "rjsConfig.js" と呼んでいます)。このファイルには、パス エイリアス、依存関係シムなどが含まれています。

したがって、私の RequireJS "data-main" ファイル "/js/rjsMain.js" は次のようになります。

require(['rjsConfig'], function () {
    require(['app/main'], function () {});
});

次に、Require "main.js" ファイルを複製して、Mocha フィクスチャ ファイルの代替エントリ ポイントを追加しました。

これは、Require 用に 2 つの個別の構成ファイルを維持する必要がないようにするためです。共有ファイルが 1 つあると便利です。

PhantomJS

PhantomJS を実際にロードして、非同期にロードされたコンテンツとやり取りするようにするにはどうすればよいですか? それはまた別の問題です。それは非常に難しい場合があります。

幸いなことに、このトリックを実行するファイルを見つけました。

あまり良い名前はありませんが、少なくとも私にとっては、「load_ajax.js」は、それを機能させるために必要な秘密のソースです。

https://gist.github.com/kalharbi/fc9d4f71b5e2a8f485cc

ローカル ルートに対して実行するようにカスタマイズする必要があります。

于 2016-11-17T22:28:46.473 に答える