Как работать с настройками wallabyjs и karma (с requirejs)
После прочтения ответов и комментариев по теме Wallaby на сервере сборки (CI) я согласился, что wallabyjs в настоящее время не готов к сценарию ci. Хорошо, но я все еще задаюсь вопросом, как справиться с типичным сценарием, который использует wallabyjs на клиенте и карму (или другого тестового бегуна) в системе ci. Особенно при использовании requirejs. Как объясняется здесь, есть
test-main.js - который настраивает require.js для тестов
Используя wallabyjs это выглядит более или менее как
// delaying wallaby automatic start
wallaby.delayStart();
requirejs.config({
baseUrl: '/src',
paths: {
'jquery': '../lib/jquery',
'underscore': '../lib/underscore'
},
shim: {
'underscore': {
exports: '_'
}
}
});
require(wallaby.tests, function () {
wallaby.start();
});
Используя карму, как это объясняется здесь, она выглядит примерно так
var TEST_REGEXP = /(spec|test)\.js$/i;
var allTestFiles = [];
// Get a list of all the test files to include
Object.keys(window.__karma__.files).forEach(function(file) {
if (TEST_REGEXP.test(file)) {
// Normalize paths to RequireJS module names.
// If you require sub-dependencies of test files to be loaded as-is (requiring file extension)
// then do not normalize the paths
var normalizedTestModule = file.replace(/^\/base\/|\.js$/g, '');
allTestFiles.push(normalizedTestModule);
}
});
require.config({
// Karma serves files under /base, which is the basePath from your config file
baseUrl: '/base/src',
// example of using a couple path translations (paths), to allow us to refer to different library dependencies, without using relative paths
paths: {
'jquery': '../lib/jquery',
'underscore': '../lib/underscore',
},
// example of using a shim, to load non AMD libraries (such as underscore)
shim: {
'underscore': {
exports: '_'
}
},
// dynamically load all test files
deps: allTestFiles,
// we have to kickoff jasmine, as it is asynchronous
callback: window.__karma__.start
});
Должен ли я поддерживать два файла? Нужна ли какая-то условная сборка? Кто-нибудь сталкивался с этим сценарием?
Большое спасибо.
1 ответ
Вы можете объединить эти два файла в один, чтобы повторно использовать общую часть и добавить логику для выполнения определенных битов в зависимости от текущего участника.
window.wallaby && wallaby.delayStart();
...
if (window.__karma__) {
...
}
...
require.config({
baseUrl: window.__karma__ ? '/base/src' : '/src',
...