Я новичок в модульном тестировании. Я хочу научиться правильно тестировать, используя Jest, и после статей, демонстраций и курса по Udemy я все еще в замешательстве (особенно при использовании Jest mocking). Я должен отметить, что весь наш код реагирует извне, поэтому он, кажется, смущает меня еще больше.
Я написал тест AB для своей компании и уже понял, что его должно быть легко проверить, но я не думаю, чтоЯ делаю это правильно. Кажется, что я просто копирую свой исходный код для тестирования, и хотя я чувствую, что функция проверена, мне кажется, что это неправильно.
Вот мой рассматриваемый код и тест. Как бы вы, ребята, у которых больше опыта, сделали это "правильно"?
Спасибо!
JS:
let ABTestValue = 30;
ABTest();
export function ABTest() {
const roll = Math.floor(Math.random() * 100);
if (debugMode) {
console.log('TimedRefresh - AB Test Issue-831 (90 and above get their refresh time changed) randomized value = ', roll);
}
const ABTestMappings = [
{
roll: 90,
ABTestValue: 40
},
{
roll: 91,
ABTestValue: 40
},
{
roll: 92,
ABTestValue: 50
},
{
roll: 93,
ABTestValue: 50
},
{
roll: 94,
ABTestValue: 60
},
{
roll: 95,
ABTestValue: 60
},
{
roll: 96,
ABTestValue: 70
},
{
roll: 97,
ABTestValue: 70
},
{
roll: 98,
ABTestValue: 80
},
{
roll: 99,
ABTestValue: 80
}
];
if (roll > 89 && roll < 100) {
ABTestValue = ABTestMappings.filter((a) => a.roll === roll)[0].ABTestValue;
}
window.rg_version = `time${ABTestValue}`;
if (debugMode) {
console.log('TimedRefresh - ABTestValue - change in refresh time in seconds (30 is default) - ', ABTestValue);
}
}
test.js:
import { ABTest } from './index';
describe('ABTEST test', () => {
it('ABTest function', () => {
expect(ABTest).toBeDefined();
})
describe('test different rolls', () => {
const ABTestMappings = [
{
roll: 90,
ABTestValue: 40
},
{
roll: 91,
ABTestValue: 40
},
{
roll: 92,
ABTestValue: 50
},
{
roll: 93,
ABTestValue: 50
},
{
roll: 94,
ABTestValue: 60
},
{
roll: 95,
ABTestValue: 60
},
{
roll: 96,
ABTestValue: 70
},
{
roll: 97,
ABTestValue: 70
},
{
roll: 98,
ABTestValue: 80
},
{
roll: 99,
ABTestValue: 80
}
];
const roll = 92;
const roll2 = 95;
const roll3 = 99;
const roll4 = 80;
let ABTestValue = 30;
let ABTestValue2 = 30;
let ABTestValue3 = 30;
let ABTestValue4 = 30;
if (roll > 89 && roll < 100) {
ABTestValue = ABTestMappings.filter((a) => a.roll === roll)[0].ABTestValue;
}
if (roll2 > 89 && roll2 < 100) {
ABTestValue2 = ABTestMappings.filter((a) => a.roll === roll2)[0].ABTestValue;
}
if (roll3 > 89 && roll3 < 100) {
ABTestValue3 = ABTestMappings.filter((a) => a.roll === roll3)[0].ABTestValue;
}
if (roll4 > 89 && roll4 < 100) {
ABTestValue4 = ABTestMappings.filter((a) => a.roll === roll4)[0].ABTestValue;
}
it('if roll is 92', () => {
if (roll) {
expect(ABTestValue).toEqual(50);
}
})
it('if roll is 95', () => {
if (roll2) {
expect(ABTestValue2).toEqual(60);
}
})
it('if roll is 99', () => {
if (roll3) {
expect(ABTestValue3).toEqual(80);
}
})
it('if roll is less than 90', () => {
if (roll4) {
expect(ABTestValue4).toEqual(30);
}
})
})
})