Ant*_*kiy 6 typescript protractor e2e-testing angular
我想在Angular2中的hello world应用程序上进行e2e测试,并使用typescript编写规范.但是,量角器崩溃时出现以下消息:
Using the selenium server at http://localhost:4444/wd/hub
[launcher] Running 1 instances of WebDriver
[launcher] Error: ReferenceError: System is not defined
at Object.<anonymous> (C:\Dev\d2ipm\test\e2e\overview.js:1:1)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Module.require (module.js:367:17)
at require (internal/module.js:16:19)
at C:\Users\%username%\AppData\Roaming\npm\node_modules\protractor\node_modules\jasmine\lib\jasmine.js:63:5
at Array.forEach (native)
at Jasmine.loadSpecs (C:\Users\%username%\AppData\Roaming\npm\node_modules\protractor\node_modules\jasmine\lib\jasmine.js:62:18)
[launcher] Process exited with error code 100
Run Code Online (Sandbox Code Playgroud)
由于我默认使用SystemJS作为Angular2建议,System
因此包含在每个已编译的.js文件中,包括测试规范.我的index.html按照教程中的建议配置系统,应用程序可以运行:
<script src="node_modules/es6-shim/es6-shim.min.js"></script>
<script src="node_modules/systemjs/dist/system-polyfills.js"></script>
<script src="node_modules/angular2/bundles/angular2-polyfills.js"></script>
<script src="node_modules/systemjs/dist/system.src.js"></script>
<script src="node_modules/rxjs/bundles/Rx.js"></script>
<script src="node_modules/angular2/bundles/angular2.dev.js"></script>
<!-- 2. Configure SystemJS -->
<script>
System.config({
packages: {
app: {
format: 'register',
defaultExtension: 'js'
}
},
globalEvaluationScope: false
});
System.import('app/boot')
.then(null, console.error.bind(console));
</script>
Run Code Online (Sandbox Code Playgroud)
用纯JS编写的运行测试工作正常.如何让我的测试环境看到System
?
当你通过Protractor运行e2e测试时,实际上有2个环境:
即使您在 index.html 文件中加载库,您的 e2e-spec 文件也无法访问它们。其中包括 systemjs。当 Typescript 编译器使用时,这是一个问题"module": "system"
一种解决方案是配置构建过程,以便使用该"module": "commonjs"
选项编译 e2e-spec 文件。如果您希望能够将文件从 Web 应用程序导入到测试规范中,则必须将整个应用程序编译两次(尽管我不确定是否有很多用例这样做是有意义的)。
例如,使用 gulp
const gulpTypings = require('gulp-typings')
const sourcemaps = require('gulp-sourcemaps')
const ts = require('gulp-typescript')
const tsProject = ts.createProject('tsconfig.json')
const tsProjectE2E = ts.createProject('tsconfig-e2e.json')
const tsFiles = [
'typings/index.d.ts',
'app/**/*.ts',
'!**/*.e2e-spec.ts',
'!node_modules/**/*'
]
const tsFilesE2E = [
'typings/index.d.ts',
'app/**/*.e2e-spec.ts',
'app/**/*.ts', // You should not need that unless you use your app files in your tests
'!node_modules/**/*'
]
gulp.task('typings', () => gulp
.src('./typings.json')
.pipe(gulpTypings())
)
gulp.task('ts', ['typings'], () => gulp
.src(tsFiles)
.pipe(sourcemaps.init())
.pipe(ts(tsProject))
.js
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('app'))
)
gulp.task('ts-e2e', ['typings'], () => gulp
.src(tsFilesE2E)
.pipe(sourcemaps.init())
.pipe(ts(tsProjectE2E))
.js
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('e2e')) // Note that your compiled tests files are put in the e2e/ folder now
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1450 次 |
最近记录: |