Я хочу иметь возможность тестировать частные Typescript
методы.Пожалуйста, пропустите вашу лекцию why this is a bad idea
.Я слышал это.
Вот демонстрационный код:
class MyClass {
age: number
private ageAsString(): string {
return '15'
}
}
Вот мои параметры в тестовом файле:
1 - запись //@ts-ignore
, которая позволяет TS скомпилировать эту строку.Это очень неудобно, когда вы звоните 200 х expect()
с.Но я не смог найти способ сделать этот блок на основе файлов.
it('Test ageAsString', () => {
// @ts-ignore
expect(new MyClass().ageAsString()).to.equal('15')
})
2 - Превращение объекта класса в any
объект.Это отключает функции автозаполнения и рефакторинга, которые я получаю от TS и моей IDE.Сначала это кажется хорошей идеей, но через месяц она либо сломает 200 моих тестов, либо приведет к непредвиденным ошибкам.
it('Test ageAsString', () => {
const anyClass: any = new MyClass
expect(anyClass.ageAsString()).to.equal('15')
})
3 - Может использовать доступ к массиву, который работает, но создает те же проблемы, что и # 2.
it('Test ageAsString', () => {
expect(new MyClass()['ageAsString']()).to.equal('15')
})
Я хочу как-то иметь возможность протестировать эти методы, не имея недостатков,Сейчас у меня есть 2 варианта, оба плохих.
- Пропустить написание конкретных подробных юнит-тестов
- Сделать метод общедоступным
Пожалуйста, дайте мне 3-й вариант