我正在尝试使用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
答案 0 :(得分:12)
在尝试了许多其他建议(每个建议都在相应的环境中工作)之后,点击这个解决方案:
phantom.page.injectJs( 'script.js');
答案 1 :(得分: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"]
我们也可以使用命令行args注入模块:
casperjs test --includes=foo.js,bar.js path/to/the/test/file
要导入用户模块,请使用:
require "./user-module.coffee"
然后在用户模块中,您还可以使用require。使用require路径得到解决 相对于当前文件(调用require) 如果在用户模块中要导入casper libs,则需要 patch require , 检查:https://casperjs.readthedocs.org/en/latest/writing_modules.html
答案 2 :(得分:2)
var require = patchRequire(global.require);
require('./user');
在您的情况下,您应该使用global.require
,因为您正在使用CoffeeScript。