Ключевое слово
private
предназначено только для TypeScript, но не для JavaScript. После компиляции модификаторы доступа к свойству / методу будут удалены. Вы по-прежнему можете получить к ним доступ с помощью точки и квадратных скобок. Чтобы игнорировать проверку типа TS C, мы используем квадратные скобки способом.
index.ts
:
export class MyClass {
private objects: any = [];
public addObject(object: any): any {
this.objects.push(object);
}
}
index.test.ts
:
import { MyClass } from './';
describe('60507395', () => {
it('should add object', () => {
const myClass = new MyClass();
const pushSpy = jest.spyOn(myClass['objects'], 'push');
myClass.addObject({});
expect(pushSpy).toBeCalledWith({});
expect(myClass['objects']).toHaveLength(1);
});
});
Результаты модульного тестирования со 100% покрытием:
PASS stackoverflow/60507395/index.test.ts (9.733s)
60507395
✓ should add object (4ms)
----------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------|---------|----------|---------|---------|-------------------
All files | 100 | 100 | 100 | 100 |
index.ts | 100 | 100 | 100 | 100 |
----------|---------|----------|---------|---------|-------------------
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 11.604s