Транспортир Жасмин Репортер + BDD + Azure DevOps - PullRequest
0 голосов
/ 04 февраля 2019

Я бы хотел написать Жасмин 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);
      });
    });
  });
});

Поэтому для функции Индивидуальные данные, еслиновый Индивид устанавливается, тогда элементы управления должны быть пустыми, а кнопка сохранения отключена.Тем не менее, с наивной точки зрения, все в порядке.Также, выполняя тесты, я вижу:

enter image description here

Что кажется нормальным.Теперь интересная часть: я хотел бы опубликовать эти изменения в 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 проверяет только имя, я вижу:

enter image description here

Моя проблема: я не знаюточно, где моя проблема лежит.Я не нашел хороших ресурсов относительно "настоящего" BDD с Jasmine, также кажется, что Jasmine Reporter не может быть настроен так сильно: https://github.com/larrymyers/jasmine-reporters

Поэтому мой код полностью неверен илина самом деле репортер?И если это так, есть ли альтернативы или мне нужно как-то «сплющить» XML?

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

вы можете использовать свойство useFullTestName:

jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({
      consolidateAll: true,
      useFullTestName:true,
      savePath: 'e2e/output',
      filePrefix: 'xmlresults'
    }));
0 голосов
/ 10 февраля 2019

Я согласен с комментарием выше, создание собственного репортера звучит как путь.Вы можете форматировать содержимое по своему усмотрению.

Недавно я ответил на другой вопрос, касающийся репортера Jasmine здесь .Я переформатировал результаты своего теста в объект JSON и сохранял их в amazons DynamoDB после каждого теста.

Если у меня возникнут какие-либо вопросы, сообщите мне.

...