Javascript DRY jasmine测试-在多个.js文件之间共享代码
TLDR:是否可以在两个.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
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'
],