Я бы хотел написать Жасмин End 2 End Test в стиле BDD.Из того, что я узнал, это означает, что у меня есть почти четыре области:
- Функция
- Сценарий
- стимул или событие
- Результатычтобы убедиться, что
С моей наивной точки зрения, я бы создал тест для функции "Индивидуальные данные", например:
// Feature
describe('Showing Individual Details', () => {
let individualDetailsPage: IndividualDetailsPage;
beforeEach(() => {
individualDetailsPage = new IndividualDetailsPage();
});
// Scenario - New Individual
describe('Given a new Individual', () => {
beforeEach(async () => {
await individualDetailsPage.navigateToDetails('-1');
});
// Incoming Event
describe('When the Details are loaded', () => {
// Ensure outcome
it('Then all Controls are empty', async () => {
expect(individualDetailsPage.firstNameInput.text).toBe('');
expect(individualDetailsPage.lastNameInput.text).toBe('');
expect(individualDetailsPage.birthdateInput.text).toBe('');
});
// Ensure outcome
it('Then the save button is disabled', () => {
expect(individualDetailsPage.saveButton.isEnabled).toBe(false);
});
});
});
});
Поэтому для функции Индивидуальные данные, еслиновый Индивид устанавливается, тогда элементы управления должны быть пустыми, а кнопка сохранения отключена.Тем не менее, с наивной точки зрения, все в порядке.Также, выполняя тесты, я вижу:
Что кажется нормальным.Теперь интересная часть: я хотел бы опубликовать эти изменения в DevOps Azure, поэтому я использую следующий код в конфигурации транспортира:
onPrepare() {
require('ts-node').register({
project: require('path').join(__dirname, './tsconfig.e2e.json')
});
var jasmineReporters = require('jasmine-reporters');
var junitReporter = new jasmineReporters.JUnitXmlReporter({
savePath: 'testresults',
filePrefix: 'e2e-tests',
consolidateAll: true
});
jasmine.getEnv().addReporter(junitReporter);
}
К сожалению, XML выглядит так:
<testsuite name="Showing Individual Details" timestamp="2019-02-04T18:23:33" hostname="localhost" time="2.035" errors="0" tests="0" skipped="0" disabled="0" failures="0">
</testsuite>
<testsuite name="Showing Individual Details.Given a new Individual" timestamp="2019-02-04T18:23:33" hostname="localhost" time="2.033" errors="0" tests="0" skipped="0" disabled="0" failures="0">
</testsuite>
<testsuite name="Showing Individual Details.Given a new Individual.When the Details are loaded" timestamp="2019-02-04T18:23:33" hostname="localhost" time="2.033" errors="0" tests="2" skipped="0" disabled="0" failures="0">
<testcase classname="Showing Individual Details.Given a new Individual.When the Details are loaded" name="Then all Controls are empty" time="1.106" />
<testcase classname="Showing Individual Details.Given a new Individual.When the Details are loaded" name="Then the save button is disabled" time="0.927" />
</testsuite>
Поскольку кажется, что DevOps Azure проверяет только имя, я вижу:
Моя проблема: я не знаюточно, где моя проблема лежит.Я не нашел хороших ресурсов относительно "настоящего" BDD с Jasmine, также кажется, что Jasmine Reporter не может быть настроен так сильно: https://github.com/larrymyers/jasmine-reporters
Поэтому мой код полностью неверен илина самом деле репортер?И если это так, есть ли альтернативы или мне нужно как-то «сплющить» XML?