2017-12-12 3 views
0

Ich mache eine ES6-Umschreibung für eine js-Bibliothek.ES6: Tests im Browser übergeben, fail mit phantomJS, "Variable kann nicht gefunden werden: Reflektieren"

class VerbalExpression extends RegExp { 
    // snipped for brevity 
} 

/** 
* Alias for the constructor 
* @return {VerbalExpression} new instance of VerbalExpression 
*/ 
function instantiate() { 
    return new VerbalExpression(); 
} 

// UMD (Universal Module Definition) 
// https://github.com/umdjs/umd 
if (typeof module !== 'undefined' && module.exports) { // CommonJS 
    module.exports = instantiate; 
} else if (typeof define === 'function' && define.amd) { // AMD Module 
    define('VerEx', [],() => VerbalExpression); 
} else { // Browser 
    this.VerEx = instantiate; 
} 

Wenn ich die Tests in meinem Browser ausführen, werden alle bestanden.

tests pass in browser

Allerdings, wenn ich die Tests im Terminal laufen lasse, erhalte ich Fehler.

❯ npm test 

[email protected] test /Users/shreyasminocha/dev/open source/JSVerbalExpressions 
grunt test 

Running "qunit:files" (qunit) task 
Testing test/index.html FFFFFFFFFFFFFFFFFFFF 
>> something 
>> Message: Died on test #1 global [email protected]:///Users/shreyasminocha/dev/open%20source/JSVerbalExpressions/test/tests.js:7:5: Can't find variable: Reflect 
>> Actual: null 
>> Expected: undefined 
>> [email protected]:///Users/shreyasminocha/dev/open%20source/JSVerbalExpressions/dist/verbalexpressions.js:11:31 
>> [email protected]:///Users/shreyasminocha/dev/open%20source/JSVerbalExpressions/dist/verbalexpressions.js:59:130 
>> [email protected]:///Users/shreyasminocha/dev/open%20source/JSVerbalExpressions/dist/verbalexpressions.js:588:32 
>> [email protected]:///Users/shreyasminocha/dev/open%20source/JSVerbalExpressions/test/tests.js:8:26 

... 

Warning: 20 tests completed with 20 failed, 0 skipped, and 0 todo. 
20 assertions (in 91ms), passed: 0, failed: 20 Use --force to continue. 

Hinweis: Ich bin die Tests auf kompilierte es6 Code ausgeführt wird, das heißt, ich laufe babel, bevor die Tests ausgeführt werden.

Ich vermute, das ist etwas mit PhantomJS zu tun. Wie bekomme ich die Tests im Terminal? Fehle ich etwas? Irgendwelche Problemumgehungen?

Antwort

0

Stabile PhantomJS unterstützt ES6 nicht und befindet sich nicht mehr in der Entwicklung. Wenn möglich, migrieren Sie zu puppeteer, das stark von PhantomJS inspiriert ist.

+0

Wie führe ich Qunit Tests mit Puppenspieler mit Grunt? – shreyasminocha

+0

Entschuldigung, ich nehme meinen Zugriff auf Google immer als selbstverständlich hin ... Könnte das helfen? https://dtaylor.uk/blog/2017/08/chrome-qunit/ – Vaviloff

Verwandte Themen