Недопустимое свойство chai при использовании браузеров Chrome, Firefox в Karma
Я использовал PhantomJS в качестве браузера для запуска моих тестов кармы с использованием grunt-karma. Сейчас я пытаюсь переключиться на другой браузер, но получаю набор ошибок "Недопустимое свойство Chai" при запуске тестов, которые, как представляется, происходят в строках с использованием утверждений must, таких как "foo.should.be.a.function".;" Я попробовал несколько вещей, но ничего не исправило, и, кажется, нет никаких ранее существовавших проблем, решающих эту проблему. Вот мой пакет и karma.config. Обратите внимание, что я сократил оба списка. Я также должен добавить, что я попытался обновить все модули, связанные с тестированием, до их последних версий, поскольку я знаю, что некоторые из них являются парой версий позади, но это не дало положительного эффекта, поэтому я вернулся.
// karma.config
frameworks: ['mocha', 'chai', 'sinon-chai'],
browsers: ['ChromeHeadless'],
// package.json
"devDependencies": {
"angular-mocks": "1.6.5",
"babel-core": "6.26.0",
"babel-plugin-syntax-async-functions": "6.13.0",
"babel-plugin-transform-exponentiation-operator": "6.24.1",
"babel-plugin-transform-regenerator": "6.26.0",
"babel-preset-env": "1.6.1",
"chai": "4.1.2",
"chai-as-promised": "7.1.1",
"grunt": "1.0.1",
"grunt-angular-templates": "1.1.0",
"grunt-babel": "6.0.0",
"grunt-cli": "1.2.0",
"grunt-contrib-watch": "1.0.0",
"grunt-karma": "2.0.0",
"grunt-mocha-istanbul": "5.0.2",
"grunt-mocha-test": "0.13.2",
"include-all": "^4.0.3",
"istanbul": "0.4.5",
"karma": "1.7.1",
"karma-babel-preprocessor": "7.0.0",
"karma-chai": "0.1.0",
"karma-chrome-launcher": "2.2.0",
"karma-mocha": "1.3.0",
"karma-ng-html2js-preprocessor": "1.0.0",
"karma-phantomjs-launcher": "1.0.4",
"karma-sinon": "1.0.5",
"karma-sinon-chai": "1.3.4",
"karma-spec-reporter": "0.0.31",
"mocha": "3.2.0",
"sinon": "4.5.0",
"sinon-chai": "3.0.0",
"updtr": "2.0.0"
}
1 ответ
С некоторой помощью я определил свою проблему. Использование PhantomJS с такими тестами, как
foo.should.be.a.function;
тест прошел бы без проблем, но я считаю, что это ошибка PhantomJS, так как это неправильный синтаксис для этого утверждения. Так должно быть
foo.should.be.a('function');
После осознания этого и внесения всех изменений все тесты "Invalid chai properties" прошли в Chrome. PhantomJS разрешает запуск этих недействительных тестов, поэтому я рад, что мы вносим изменения.