2
私はカルマテストをtravis-ciビルドで実行しようとしています。私はクロムを得る方法を考え出しましたが、今はエラーを投げます。しかし、私はこのエラーをローカルで経験しないので、travis-ci環境と何か関係がなければならないと仮定します。Uncaught SyntaxError:strictモードでのconstの使用|クロムスローを使ったTravis-ciカルマテスト
26 08 2016 17:43:47.109:INFO [karma]: Karma v1.2.0 server started at http://localhost:9876/
26 08 2016 17:43:47.112:INFO [launcher]: Launching browser Chrome_travis_ci with unlimited concurrency
26 08 2016 17:43:47.279:INFO [launcher]: Starting browser Chromium
26 08 2016 17:43:49.456:INFO [Chromium 37.0.2062 (Ubuntu 0.0.0)]: Connected on socket /#NbeFghd0qtvN2-vKAAAA with id 90741507
Chromium 37.0.2062 (Ubuntu 0.0.0) ERROR
Uncaught SyntaxError: Use of const in strict mode.
at webpack:///src/app/app.spec.ts:1:0 <- spec-bundle.js:46116
SPEC-bundle.js
/**
* @author: @AngularClass
*/
Error.stackTraceLimit = Infinity;
require('core-js/es6');
require('core-js/es7/reflect');
// Typescript emit helpers polyfill
require('ts-helpers');
require('zone.js/dist/zone');
require('zone.js/dist/long-stack-trace-zone');
require('zone.js/dist/async-test');
require('zone.js/dist/fake-async-test');
require('zone.js/dist/sync-test');
require('zone.js/dist/proxy');
require('zone.js/dist/jasmine-patch');
// RxJS
require('rxjs/Rx');
var testing = require('@angular/core/testing');
var browser = require('@angular/platform-browser-dynamic/testing');
testing.setBaseTestProviders(
browser.TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS,
browser.TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS
);
/*
* Ok, this is kinda crazy. We can use the the context method on
* require that webpack created in order to tell webpack
* what files we actually want to require or import.
* Below, context will be an function/object with file names as keys.
* using that regex we are saying look in ./src/app and ./test then find
* any file that ends with spec.js and get its path. By passing in true
* we say do this recursively
*/
var testContext = require.context('../src', true, /\.spec\.ts/);
/*
* get all the files, for each file, call the context function
* that will require the file and load it up here. Context will
* loop and require those spec files here
*/
function requireAll(requireContext) {
return requireContext.keys().map(requireContext);
}
// requires and returns all modules that match
var modules = requireAll(testContext);
app.spec.ts
import { addProviders, inject } from '@angular/core/testing';
// Load the implementations that should be tested
import { AppComponent } from './app.component';
describe('AppComponent',() => {
// provide our implementations or mocks to the dependency injector
beforeEach(() => addProviders([AppComponent]));
it('should have a name', inject([AppComponent], (app) => {
expect(app.name).toEqual('spring-boot-angular2');
}));
});
karma.conf.js
/**
* @author: @AngularClass
*/
var path = require('path');
module.exports = function(config) {
var testWebpackConfig = require('./webpack.test.js');
var configuration = {
// base path that will be used to resolve all patterns (e.g. files, exclude)
basePath: '',
/*
* Frameworks to use
*
* available frameworks: https://npmjs.org/browse/keyword/karma-adapter
*/
frameworks: ['jasmine'],
// list of files to exclude
exclude: [ ],
/*
* list of files/patterns to load in the browser
*
* we are building the test environment in ./spec-bundle.js
*/
files: [ { pattern: './spec-bundle.js', watched: false } ],
/*
* preprocess matching files before serving them to the browser
* available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
*/
preprocessors: { './spec-bundle.js': ['coverage', 'webpack', 'sourcemap'] },
// Webpack Config at ./webpack.test.js
webpack: testWebpackConfig,
coverageReporter: {
dir : '../coverage/',
reporters: [
{ type: 'text-summary' },
{ type: 'json' },
{ type: 'html' }
]
},
// Webpack please don't spam the console when running in karma!
webpackServer: { noInfo: true },
/*
* test results reporter to use
*
* possible values: 'dots', 'progress'
* available reporters: https://npmjs.org/browse/keyword/karma-reporter
*/
reporters: [ 'mocha', 'coverage' ],
// web server port
port: 9876,
// enable/disable colors in the output (reporters and logs)
colors: true,
/*
* level of logging
* possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
*/
logLevel: config.LOG_INFO,
// do not fail on empty test suite
//failOnEmptyTestSuite: false,
// enable/disable watching file and executing tests whenever any file changes
autoWatch: false,
/*
* start these browsers
* available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
*/
browsers: [
'Chromium'
],
customLaunchers: {
Chrome_travis_ci: {
base: 'Chromium',
chromeDataDir: path.resolve(__dirname, '.chrome'),
flags: ['--no-sandbox']
}
},
/*
* Continuous Integration mode
* if true, Karma captures browsers, runs the tests and exits
*/
singleRun: true
};
if(process.env.TRAVIS){
configuration.browsers = ['Chrome_travis_ci'];
}
config.set(configuration);
};