Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript DRY jasmine测试-在多个.js文件之间共享代码_Javascript_Jasmine - Fatal编程技术网

Javascript DRY jasmine测试-在多个.js文件之间共享代码

Javascript DRY jasmine测试-在多个.js文件之间共享代码,javascript,jasmine,Javascript,Jasmine,TLDR:是否可以在两个.js文件之间共享代码 情况: 我使用yeoman命令yo angular 我的karma jasmine测试有以下目录布局: ../client/test/spec .... /controllers ........ * jasmine tests * .... /directives ........ * jasmine tests * .... /services ........ * jasmine tests * 例如,我有两个测试: userservice

TLDR:是否可以在两个.js文件之间共享代码

情况:

我使用
yeoman
命令
yo angular

我的karma jasmine测试有以下目录布局:

../client/test/spec
.... /controllers
........ * jasmine tests *
.... /directives
........ * jasmine tests *
.... /services
........ * jasmine tests *
例如,我有两个测试:

userservice.js
navservice.js
在每个.js文件中,我可以通过共享
描述
函数等干燥,但是可以在.js文件之间共享一些代码吗?例如,我可以共享此函数,而不是将其剪切并粘贴到每个文件中

来自python的我通常会制作一个文件
common.py
,在我的其他测试用例文件中,我会从common import sharedFunction中使用
sharedFunction

编辑:这是我用来运行测试的命令:

/usr/local/bin/node "/Users/robertking/Library/Application Support/PyCharm30/js-karma/js_reporter/karma-intellij/lib/intellijRunner.js" --karmaPackageDir=/Users/../client/node_modules/karma --serverPort=8080 --urlRoot=/

只要您有
节点
,您就可以使用helpers方法创建JavaScript文件,并在测试中创建它


第二种解决方案-Karma可以加载任何JavaScript文件–不仅是开发和测试文件,还可以加载…助手。请查看karma.conf.js文件和
文件部分:[

我使用了Krzysztof Safjanowski的解决方案。原来我的
karma.conf.js
中已经有了
'test/spec/***.js'
,这意味着我可以把
common.js
放在
test/spec
文件夹中。唯一需要注意的是隔离和竞争条件等,因为测试是并行运行的:

files: [
      'app/bower_components/angular/angular.js',
      'app/bower_components/angular-mocks/angular-mocks.js',
      'app/bower_components/angular-resource/angular-resource.js',
      'app/bower_components/angular-cookies/angular-cookies.js',
      'app/bower_components/angular-sanitize/angular-sanitize.js',
      'app/bower_components/angular-route/angular-route.js',
      'app/bower_components/angular-bootstrap/ui-bootstrap.js',
      'app/bower_components/angular-bootstrap/ui-bootstrap-tpls.js',
      'app/bower_components/angular-touch/angular-touch.js',
      'app/bower_components/angular-scroll/angular-scroll.min.js',
      'app/bower_components/angular-gapi/modules/gapi-client.js',
      'app/bower_components/angular-xeditable/dist/js/xeditable.js',
      'app/bower_components/angular-gettext/dist/angular-gettext.js',
      'app/bower_components//ngstorage/ngStorage.js',
      'app/scripts/*.js',
      'app/scripts/**/*.js',
      //'test/mock/**/*.js',
      'test/spec/**/*.js'
    ],