Я новичок во всем этом тестировании, так что, может быть, я чего-то не понимаю, но мой проект настроен на карму, мокко, машинопись.
Кажется, все работает отлично, пока я не вхожу в инструменты разработки Chrome и не перебираю свой код. На вкладке источников я вижу папку src и файлы в моем тестовом проекте:
Для моего spec-файла я вижу две записи: скомпилированный js, а затем исходный ts, полученный из информации исходной карты в js-файле. В моем исходном файле спецификации я импортирую класс TestClass.ts. Этот файл указан три раза: скомпилированный файл js и версия ts, но также и другой файл js с тем же именем. TestClass.ts и второй TestClass.js являются производными от исходной карты, встроенной в первый TestClass.js.
==> Проблема в том, что, когда я перебираю код и он попадает в TestClass, он переключается между отображенными TestClass.ts и TestClass.js. Это не останется только в ТС.
Полагаю, это из-за того, что они оба упоминаются в исходной карте, но почему это происходит? И почему только с импортированными классами, а не с моим скриптом спецификаций?
sample.spec.ts:
import { expect } from "chai";
import { describe, it } from "mocha";
import TestClass from "./TestClass";
describe("Test A", function() {
it("should pass", function(){
expect(TestClass.getString()).to.be.a("string");
});
});
TestClass.ts:
export default class TestClass {
static getString () {
return "This is a string";
}
}
karma.conf.js:
module.exports = function(config) {
config.set({
basePath: "",
frameworks: ["mocha", "chai", "sinon", "karma-typescript"],
files: [
"src/sample.spec.ts",
"src/TestClass.ts"
],
exclude:[
"scr/**.*.js"
],
preprocessors: {
"**/*.ts": "karma-typescript" // *.tsx for React Jsx
},
reporters: ["karma-typescript","progress", "mocha"],
port: 9876,
colors: true,
logLevel: config.LOG_DEBUG,
autoWatch: true,
browsers: ["ChromeDebug"],
customLaunchers: {
ChromeDebug: {
base: "Chrome",
flags: ["--remote-debugging-port=9333"],
smartStep: true
}
},
singleRun: false,
karmaTypescriptConfig: {
tsconfig: "./tsconfig.test.json"
},
})
}
tsconfig.test.json:
{
"compileOnSave": false,
"compilerOptions": {
"noImplicitAny": true,
"noEmitOnError": true,
"removeComments": false,
"sourceMap": true,
"target": "es5",
"lib": ["es2015"],
"module": "commonjs",
"moduleResolution": "node",
"alwaysStrict": true,
"allowSyntheticDefaultImports": true,
"resolveJsonModule": true,
},
"exclude": [
"node_modules",
"buildtasks",
"build",
"tasks",
"docs"
]
}
package.json:
{
"name": "test",
"version": "1.0.0-alpha.1",
"description": "This is a test.",
"dependencies": {},
"devDependencies": {
"@types/bluebird": "^3.5.24",
"@types/chai": "^4.1.4",
"@types/karma": "^1.7.6",
"@types/mocha": "^5.2.5",
"@types/sinon": "^5.0.2",
"chai": "^4.1.2",
"karma": "^3.0.0",
"karma-chai": "^0.1.0",
"karma-chrome-launcher": "^2.2.0",
"karma-mocha": "^1.3.0",
"karma-mocha-reporter": "^2.2.5",
"karma-sinon": "^1.0.5",
"karma-typescript": "^3.0.13",
"mocha": "^5.2.0",
"sinon": "^6.3.3",
"typescript": "^3.0.3"
},
"scripts": {
"karma:dev.test": "karma start karma.conf.js"
}
}
Я пытался понять это уже пару дней. Сводит меня с ума!
Спасибо!