2016-11-13 3 views
1

У меня есть приложение Typcript + Node + Angular2 + Electron и в настоящее время пытается запустить тесты для классов узлов, написанные также в TypScript.Запуск тестов Jasmine, написанных в TypeScript

Для создания приложения и запустить его в электроном я использую следующие TSconfig:

"compilerOptions": { 
    "module": "system", 
    "target": "es6", 
    ... 
    } 

Так как вы можете видеть, он использует systemjs и компиляцией TS в JS-ES6. Он отлично работает, само приложение работает.

Теперь мне нужен Жасмин, чтобы прийти на борт. Я установил этот пакет NPM, обновлена ​​мой глоток задачу запустить Глоток-жасмин для всего 1 файла:

gulp.task('jasmine', function() { 
    gulp.src('./test/test.js') 
     .pipe(jasmine()) 
}); 

Это, как выглядит мой test.js как:

System.register(["./models-src/app/models/pathWatch/pathWatch"], function(exports_1, context_1) { 
    "use strict"; 
    var __moduleName = context_1 && context_1.id; 
    var pathWatch_1; 
    return { 
     setters:[ 
      function (pathWatch_1_1) { 
       pathWatch_1 = pathWatch_1_1; 
      }], 
     execute: function() { 
      describe("Run Application:",() => { 
       it("starts",() => { 
        var pw1 = new pathWatch_1.PathWatch(); 
        expect(true).toEqual(true); 
       }); 
      }); 
     } 
    } 
}); 

Так, ничего особенного, 1 import-1test-1assert, завернутый в SystemJs. Когда я пытаюсь запустить этот тест, у меня есть ошибка: «Система не определена».

Мои вопросы:

1) Можно ли запускать тесты жасмин, используя systemjs погрузчик внутри?

2) Если возможно, мне нужно установить/настроить некоторые дополнительные материалы?

3) Я попытался скомпилировать TS, используя Module = "commonjs", и он работает. Но я не хочу компилировать свой источник по-разному для тестов и сборки. Почему он отлично работает с commonjs без каких-либо дополнительных манипуляций?

4) Также я попытался скомпилировать TS, используя Module = "es6". Он не работает, у меня есть ошибка «Неожиданное зарезервированное слово». Можно ли запускать тесты на жасмин, написанные в js es6, без пересылки их в es5?

Большое спасибо!

+0

Пожалуйста, задавайте вопросы по этому вопросу на один вопрос.Задавать несколько вопросов в одном сообщении затрудняет голосование по этому вопросу, а также ответы. –

ответ

1

1) Is it possible to run jasmine tests, using systemjs loader inside?

2) If it's possible, do I need to install/configure some additional stuff?

Вы имеете в виду, запускать тесты жасмина в узле, используя systemjs в качестве загрузчика? Я не думаю, что жасмин поддерживает использование systemjs вместо require для загрузки модулей. Поэтому ваши тесты должны быть в общих чертах, но тестовый код может использовать SystemJS для загрузки и тестирования кода приложения. Нечто подобное в test.js может работать, при условии, что systemjs настроен правильно и может найти модуль pathWatch:

describe("Run Application:",() => { 
    it("starts", (done) => { 

     var system = require('systemjs'); 
     system.config({ 
      // systemjs config here 
      // 
     }); 
     system.import('path-to-path-watch-module').then(pathWatch => { 
      var pw = new pathWatch.PathWatch(); 
      expect(true).toEqual(true); 
      done(); 
     }); 
    }); 
}); 

system.import является асинхронным, поэтому все тесты жасмина должны быть async тоже.

3) I tried to compile TS using Module="commonjs" and it's working. But I don't want to compile my source differently for tests and build. Why it's working fine with commonjs without any additional manipulations?

Потому что тогда нет никакой ссылки на системы в скомпилированный код - он использует module.exports как и любой другой модуль узла и может быть загружен как по жасмин.

4) Also I tried to compile TS using Module="es6". It's not working, I have an error "Unexpected reserved word". Is it possible to run jasmine tests written in js es6 without transpiling them into es5?

Module="es6" требует выполнения, который поддерживает ES6 import и export, поэтому она нуждается в загрузчик transpiler и модуль, прежде чем он может работать на текущей версии узла.

Смежные вопросы