Я пытаюсь выполнить модульное тестирование функции, используя Karma в качестве моего тестового прогона, Mocha в качестве моей тестовой среды, Sinon в качестве моей библиотеки для проверки / отслеживания / шпионажа и Chai в качестве моей библиотеки утверждений. Я использую Chromium в качестве моего автономного браузера в конфигурации Karma.
Однако я совершенно сбит с толку, почему я получаю следующую ошибку:
TypeError: Cannot redefine property: assign
... когда я запускаю npm test на этом:
function routeToNewPlace() {
const newLoc = "/accountcenter/content/ac.html";
window.location.assign(newLoc);
}
describe('tests', function() {
before('blah', function() {
beforeEach('test1', function() {
window.onbeforeunload = () => '';
});
});
it('routeToNewPlace should route to new place', function() {
expectedPathname = "/accountcenter/content/ac.html";
routeToNewPlace();
const stub = sinon.stub(window.location, 'assign');
assert.equal(true, stub.withArgs(expectedUrl).calledOnce);
stub.restore();
});
});
Как видите, я пытаюсь назначить пустую строку для window.location, но, похоже, это не помогает.
Вот мой karma.config.js:
module.exports = function(config) {
config.set({
frameworks: ['mocha', 'chai', 'sinon'],
files: ['jstests/**/*.js'],
reporters: ['progress'],
port: 9876, // karma web server port
colors: true,
logLevel: config.LOG_INFO,
//browsers: ['Chrome', 'ChromeHeadless', 'MyHeadlessChrome'],
browsers: ['ChromeHeadless'],
customLaunchers: {
MyHeadlessChrome: {
base: 'ChromeHeadless',
flags: ['--disable-translate', '--disable-extensions', '--remote-debugging-port=9223']
}
},
autoWatch: false,
// singleRun: false, // Karma captures browsers, runs the tests and exits
concurrency: Infinity
})
}
Любые мысли будут с благодарностью.