У меня есть веб-компонент для функции автоматического выхода из системы, который показывает модальное окно с сообщением на 59-й минуте и останавливается еще на одну минуту в случае отсутствия активности.И выходит из системы, если пользователь нигде не щелкает в окне.Таким образом, никакая активность в течение часа не приведет к автоматическому выходу пользователя из системы.Это прекрасно работает.
Теперь, чтобы проверить эту функциональность, я попытался использовать sinonjs
.Я использовал FakeTimers
, но не смог достичь результата.Я пытаюсь протестировать это модальное окно с сообщением.
Вот код:
const { When } = require('cucumber'); // eslint-disable-line import/no-extraneous-dependencies
const fs = require('fs');
const path = require('path');
let clock;
async function setupSinon() {
const sinonPath = require.resolve('sinon');
const content = await new Promise((resolve, reject) => {
fs.readFile(
path.join(sinonPath, '../../pkg/sinon.js'),
'utf-8',
async (error, cont) => {
if (error) return reject(error);
resolve(cont);
},
);
});
// creating <script> element for sinonjs to execute on the page
await browser.execute((content) => {
const script = document.createElement('script');
script.type = 'text/javascript';
script.text = content;
document.head.appendChild(script);
}, content);
}
async function iWaitForNMinutes() {
await setupSinon();
await browser.execute(() => {
before(() => {
clock = sinon.useFakeTimers();
});
clock = sinon.useFakeTimers({
now: Date.now(),
shouldAdvanceTime: true,
toFake: ['setTimeout'],
});
clock.tick('59:00'); // advancing the clock to 59 minutes so that auto-logout modal window popup, but this doesn't work
after(() => {
clock.restore();
});
setTimeout(() => {}, 60000);
});
}
When(/^I wait for minutes$/, iWaitForNMinutes);
module.exports = {
iWaitForNMinutes,
};
sinon 5.0.10
Как пользователю sinonjs
FakeTimer, чтобы увеличить время на n минут, а затем ждать фактически n минут?