Cucumber-js: Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅Π³ Π² ΠΌΠΎΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ сцСнарии Cucumber.js?

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 8 Π΄Π΅ΠΊ. 2015  Β·  5ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: cucumber/cucumber-js

ΠŸΡ€ΠΈΠ²Π΅Ρ‚,

Как ΡƒΠ·Π½Π°Ρ‚ΡŒ сцСнарий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ мою Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ? Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅Π³ΠΈ Π² ΠΌΠΎΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ сцСнарии?

На самом Π΄Π΅Π»Π΅ Ρƒ мСня Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ сцСнарий:

Feature: create module feature
  As a admin
  I want to use create module

  <strong i="8">@createModule</strong>
  Given I am logged as 'ADMIN'
    And I am on "/admin/create"
   Then The "book_id" field should be empty

Π― Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свой Ρ‚Π΅Π³ @createModule Π² своСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ΠΎΠ³Π΄Π°:

this.Then(/^The "?([^"]*)"? field should be empty$/, function (el) {

    if (myModule === @createModule) {
        ...
    } else if {
        ...
    }

    return main_po.checkIsEmptyElement(this, el);
});

Π― Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ свой Ρ‚Π΅Π³ @createModule , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ сцСнарий ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ, я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ сцСнарии Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ мою Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

РСшСно:

Π― Π΄ΠΎΠ±Π°Π²ΠΈΠ» :

this.Before(function (scenario, callback) {
    var tags = scenario.getTags();

    this.current_module = tags[0].getName();

    callback();
});

ΠΈ моя функция:

this.Then(/^The "?([^"]*)"? field should be empty$/, function (el) {

    if (this.current_module === @createModule) {
        ...
    } else if {
        ...
    }

    return main_po.checkIsEmptyElement(this, el);
});

ВсС 5 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π΅Π³ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Π²Ρ‹Π±ΠΎΡ€Π° сцСнариСв, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Cucumber-js (см. README). Π’ настоящСС врСмя шаги Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ способа ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, для ΠΊΠ°ΠΊΠΎΠ³ΠΎ сцСнария ΠΎΠ½ΠΈ Π² настоящСС врСмя Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ. ВсС шаги сцСнария Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ экзСмпляр ΠΌΠΈΡ€Π° (доступ ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· this Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ шага).

РСшСно:

Π― Π΄ΠΎΠ±Π°Π²ΠΈΠ» :

this.Before(function (scenario, callback) {
    var tags = scenario.getTags();

    this.current_module = tags[0].getName();

    callback();
});

ΠΈ моя функция:

this.Then(/^The "?([^"]*)"? field should be empty$/, function (el) {

    if (this.current_module === @createModule) {
        ...
    } else if {
        ...
    }

    return main_po.checkIsEmptyElement(this, el);
});

@jechazelle спасибо Π·Π° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡŽ вашСго Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½Π° Ρ‚Π° ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° использования :)

Π’ ΠΎΠ³ΡƒΡ€Ρ†Π΅-js 3.2.1 я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ

Before({timeout: 20000}, async function(testCase) {
  this.tags = testCase.pickle.tags.map((tag) => tag.name);`
  ...
}

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ конкрСтная рСализация шага Π΄Π°Π΅Ρ‚ сбой для извСстного подмноТСства сцСнариСв, поэтому я создал запись ΠΎ нСкритичСском Π΄Π΅Ρ„Π΅ΠΊΡ‚Π΅ Π² нашСй систСмС отслСТивания, ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΠ» Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹Π΅ сцСнарии Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ заявки, Π° Π·Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π»ΠΎΠ³ΠΈΠΊΡƒ. Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ шага Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Β«ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅Β», Ссли this.tags содСрТит Π½ΠΎΠΌΠ΅Ρ€ заявки.

Π­Ρ‚ΠΎ позволяСт нашСй сборкС Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ Π·Π΅Π»Π΅Π½ΠΎΠΌΡƒ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π²Π»Π°ΡΡ‚ΡŒ ΠΈΠΌΡƒΡ‰ΠΈΠ΅ Ρ€Π΅ΡˆΠ°ΡŽΡ‚, хотят ΠΎΠ½ΠΈ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΄Π΅Ρ„Π΅ΠΊΡ‚ ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

Π­Ρ‚Π° Π²Π΅Ρ‚ΠΊΠ° Π±Ρ‹Π»Π° автоматичСски Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ послС Π΅Π΅ закрытия Π½Π΅ Π±Ρ‹Π»ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… дСйствий Π² послСднСС врСмя. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ для связанных ошибок.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ