7

CasperJS を使用して機能テストを構築しようとしています。 caseperjsは、次のコマンドを使用してバックエンド テスト スイートによって実行されます。

PHANTOMJS_EXECUTABLE=../client/node_modules/phantomjs/bin/phantomjs  ../client/ext_modules/casperjs/bin/casperjs test ../client/test/functional/init.coffee

init.coffeeでは、すぐ隣にある他のモジュール (ファイル) をインポート/インクルードしたいと考えています。どうやってするの?

以下は機能しません。

require("user")

私が望むのは、他のファイルからinit.coffeeにコンテンツを取得することだけです

4

3 に答える 3

8

1.1 の時点で、CasperJS は PhantomJS のネイティブのrequire()に依存しています:
https://groups.google.com/forum/#!topic/phantomjs/0-DYnNn_6Bs

依存関係の注入

追加のモジュールを挿入する際、CasperJS は cur ディレクトリ ( casperjsコマンドを実行する場所) からの相対パスを探します。オプションを使用して依存関係を挿入できclientScriptsます。ただし、注入された依存関係はrequire「グローバル」に使用できません。それらは、読み込まれたすべてのページにすぐに挿入されます。

casper.options.clientScripts = ["path/relative/to/cur/dir"]

コマンドライン引数を使用してモジュールを注入することもできます。

casperjs test --includes=foo.js,bar.js path/to/the/test/file

要求の使用

ユーザー モジュールをインポートするには、次を使用します。

require "./user-module.coffee"

次に、ユーザー モジュールでは、require も使用できます。require パスを使用すると、現在のファイル (require が呼び出される場所) に対して相対的に解決されます。
ユーザー モジュールで casper ライブラリをインポートする場合は、 require にパッチを適用する必要があります。https://casperjs.readthedocs.org/en/latest/writing_modules.html

于 2013-07-18T09:13:03.593 に答える
2

ドキュメントにそれに関するセクションがあります

var require = patchRequire(global.require);
require('./user');

あなたの場合global.requireは、CoffeeScript を使用しているため、使用する必要があります。

于 2013-07-16T10:20:40.867 に答える