Ho trascorso una discreta quantità di tempo cercando di eseguire il debug di questo e ho pensato che avrei chiesto. Ho persino creato un GitHub repository ma non ci baserò su di esso, quindi ecco qui. Sto cercando di sfruttare la sintassi CommonJS all'interno del test runner Karma utilizzando PhantomJS. Per il mio modulo ho creato la cosa più semplice che potevo pensare:Uso corretto di karma-commonjs con Jasmine 2
exports.returnYes = function() {
return "Yes";
};
Il test Jasmine è:
var returnYes = require("../js/returnYes").returnYes;
describe("returnYes", function() {
it("should return Yes", function() {
expect(returnYes()).toBe("Yes");
});
});
E, se faccio un jasmine init
posso eseguirlo dalla riga di comando grazie a jasmine-npm
semplicemente digitando jasmine
con uscita:
$ jasmine
Started
.
1 spec, 0 failures
Finished in 0.003 seconds
Ora per cercare di farlo funzionare all'interno del karma: creo il mio 0.123.762,626112 millionscon strutture: jasmine
, commonjs
. E, aggiungo commonjs
come preprocessore.
cerco di fare un karma run
e trovo che non può trovare global
che fa parte del getJasmineRequireObj
in jasmine.js dove dichiara jasmineGlobal = global;
L'uscita di linea di comando è un po 'difficile da leggere, ma qui è :
$ karma run
[2015-06-27 17:41:35.266] [DEBUG] config - Loading config /Users/zen/Projects/karma-commonjs-test/karma.conf.js
##teamcity[enteredTheMatrix]
##teamcity[testSuiteStarted nodeId='1' parentNodeId='0' name='karma.conf.js' nodeType='config' locationHint='config:///Users/zen/Projects/karma-commonjs-test/karma.conf.js']
##teamcity[testSuiteStarted nodeId='2' parentNodeId='1' name='PhantomJS 1.9.8 (Mac OS X 0.0.0)' nodeType='browser']
##teamcity[testStarted nodeId='3' parentNodeId='2' name='Error' nodeType='browserError']
##teamcity[testFailed nodeId='3' error='yes' message='ReferenceError: Can|'t find variable: global|nat http://localhost:9876/base/node_modules/jasmine-core/lib/jasmine-core/jasmine.js?68f13ab3f93af5a219b9fe8409f8763b31998bba:27']
##teamcity[testSuiteFinished nodeId='2']
##teamcity[testSuiteFinished nodeId='1']
Per buona misura qui sono i devDependencies nella mia packages.json:
"devDependencies": {
"jasmine-core": "^2.3.4",
"karma": "^0.12.37",
"karma-commonjs": "0.0.13",
"karma-jasmine": "^0.3.5",
"karma-phantomjs-launcher": "^0.2.0",
"phantomjs": "^1.9.17"
}
Non sono sicuro del motivo per cui non riesco a trovare global
. Qualsiasi aiuto sarebbe molto apprezzato!!! :)