Я присоединился к проекту, основанному на Angular8.
Каждый раз, когда я запускаю тесты, я получаю разные результаты на моей локальной машине. Когда я делаю sh свою ветку в Gitlab Runner, у меня тоже разные результаты.
Так мы запускаем тесты:
ng test --no-watch --no-progress --browsers=ChromeHeadlessCI
Мы используем следующие версии:
"devDependencies": {
"@angular-builders/custom-webpack": "^8.2.0",
"@angular-devkit/build-angular": "^0.803.20",
"@angular/cli": "^8.3.4",
"@angular/compiler-cli": "^8.2.14",
"@angular/language-service": "^8.2.6",
"@types/jasmine": "^2.8.16",
"@types/node": "^10.14.18",
"@typescript-eslint/eslint-plugin": "^2.10.0",
"@typescript-eslint/parser": "^2.10.0",
"codelyzer": "^5.0.1",
"eslint": "^6.7.2",
"eslint-config-google": "^0.14.0",
"jasmine-core": "^3.4.0",
"jasmine-spec-reporter": "^4.2.1",
"karma": "^3.1.4",
"karma-chrome-launcher": "^2.2.0",
"karma-cli": "^1.0.1",
"karma-coverage-istanbul-reporter": "^2.1.0",
"karma-htmlfile-reporter": "~0.3",
"karma-jasmine": "^2.0.1",
"karma-jasmine-html-reporter": "^1.4.2",
"karma-junit-reporter": "^1.2.0",
"protractor": "^5.4.2",
"rxjs-tslint": "^0.1.7",
"ts-node": "~7.0.1",
"tslint": "^5.20.0",
"typescript": "3.5.3",
"webpack": "^4.41.2"
}
Иногда я понимаю ошибки теста, например :
TheComponent should create FAILED
Uncaught [object Object] thrown
Я исправил таким образом:
if (eOneObject && eOneObject.length > 0) {
Я добавил if (eOneObject
к условию, поэтому тест исправлен.
Но тогда у меня есть некоторые ошибки в других компонентах, которые уже прошли тесты для моих коллег, например:
MessageComponent should create FAILED
Uncaught [object Object] thrown
@Component({
selector: 'message-component',
templateUrl: './message.component.html',
styleUrls: ['./message.component.css'],
host: { '(window:resize)': 'onResize($event)' }
})
export class MessageComponent implements OnInit {
constructor(public dialogRef: MatDialogRef<MessageComponent>,
public sanitizer: DomSanitizer,
@Inject(MAT_DIALOG_DATA) public data: DialogData) { }
ngOnInit() {
}
}
Этот MessageComponent не имеет "ничего" в коде. И это прошло испытания для моих коллег.
Я не могу понять:
- Почему я получаю разные результаты в локальных тестах и Gitlab Runner (когда версии совпадают)
- Почему моя ветвь (на Gitlab runner) выдает ошибку в тестовых компонентах, что нормально в тестах моих коллег
ng test
Проверяет ли компоненты случайным образом Я имею в виду. Разве это не проверяет все в каждом запуске?
Извините, но я не смог найти ответ на все эти проблемы. Заранее спасибо.
Тесты:
describe('MessageComponent', () => {
let component: MessageComponent;
let fixture: ComponentFixture<MessageComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [ BrowserAnimationsModule, ReactiveFormsModule, FormsModule, MaterialWrapperModule, BrowserDynamicTestingModule ],
declarations: [ MessageComponent ],
providers: [
{ provide: MatDialogRef, useCase: {} },
{ provide: MAT_DIALOG_DATA, useCase: {} }
]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(MessageComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
describe('TheComponent', () => {
let component: TheComponent;
let fixture: ComponentFixture<TheComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [ ReactiveFormsModule, BrowserAnimationsModule, MaterialWrapperModule, FormsModule, HttpClientModule],
declarations: [TheComponent],
providers: [ErService, PrService, VtService, TService]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(TheComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});