<p>cucumber-js لا يجد تعريفات الخطوة</p>

تم إنشاؤها على ١١ يناير ٢٠١٧  ·  48تعليقات  ·  مصدر: cucumber/cucumber-js

مرحبًا ، أنا مبتدئ كنت أحاول لساعات للحصول على cucumber-js للعثور على تعريفات خطوتي. لقد توصلت إلى هذا المثال البسيط.

في الميزات / foo.feature:

Feature: Foo
  Scenario: Bar
    Given FooBar

في الميزات / step_definitions / step_defs.js:

var {defineSupportCode} = require('cucumber');

defineSupportCode(function({Given}) {
    Given('FooBar', function () {
      return 'pending';
    });    
});

أحصل على هذه النتيجة:

Feature: Foo

  Scenario: Bar
  ? Given FooBar

Warnings:

1) Scenario: Bar - features\foo.feature:2
   Step: Given FooBar - features\foo.feature:3
   Message:
     Undefined. Implement with the following snippet:

       Given('FooBar', function (callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });

1 scenario (1 undefined)
1 step (1 undefined)
0m00.000s
help wanted

التعليق الأكثر فائدة

على ما يرام. أعتقد أنني اكتشفت ذلك.

عند استخدام تثبيت عالمي للخيار لإجراء اختبارات الميزات ، فأنت لا تزال تحدد رمز الدعم من خلال طلب التثبيت المحلي للخيار. حقيقة أن هاتين الحالتين مختلفتين تؤدي إلى عدم تحميل تعريفات الخطوة.

هل هناك أي سبب يمنعك من استخدام التثبيت المحلي لتشغيل الأمر؟ أفعل ذلك على نظام Mac بإضافة "./node_modules/.bin" إلى طريقي.

لا أحب فكرة محاولة إجراء هذا العمل من خلال محاولة التثبيت العالمي طلب التثبيت المحلي للحصول على تعريفات الخطوة. أنا أيضًا لا أحب التثبيت العالمي لأنه يجعلك تضطر إلى تحديد أشياء مثل وحدات التجميع من خلال مسارها المطلق.

إذا كان هذا ممكنًا على windows ، فأنا أفضل تحديث الوثائق فقط للإشارة إلى أنه لا يمكن استخدام هذا كتثبيت عالمي.

ال 48 كومينتر

أعلم أن cucumber-js يعثر على ملف تعريفات الخطوة ، لأنه عندما أقوم بحقن خطأ نحوي فيه ، يبلغ cucumber-js الخطأ بشكل صحيح.

ما هو إصدار Cucumber-js الذي تستخدمه؟

تقول 2.0.0-rc.6

أيضًا مبتدئ ولديه نفس المشكلة يعمل بنفس الإصدار من cucumber.js
كنت أتابع برنامجًا تعليميًا آخر ولكني تعثرت في هذه المرحلة.

/features/add-item.feature

Feature: Shopper can add an item to their Grocery List
  As a grocery shopper
  I want to add an item to my grocery list
  So that I can remember to buy that item at the grocery store

  Scenario: Item added to grocery list
    Given I have an empty grocery list
    When I add an item to the list
    Then The grocery list contains a single item

  Scenario: Item accessible from grocery list
    Given I have an empty grocery list
    When I add an item to the list
    Then I can access that item from the grocery list`

/features/step_definitions/add-item.steps.js
'use strict';

module.exports = function() {

    Given('I have an empty grocery list', function (callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });


    When('I add an item to the list', function (callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });

    Then('The grocery list contains a single item', function (callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });

    Then('I can access that item from the grocery list', function (callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });

}

إرجاع $ node_modules/.bin/cucumber-js

Feature: Shopper can add an item to their Grocery List

    As a grocery shopper
    I want to add an item to my grocery list
    So that I can remember to buy that item at the grocery store

  Scenario: Item added to grocery list
  ? Given I have an empty grocery list
  ? When I add an item to the list
  ? Then The grocery list contains a single item

  Scenario: Item accessible from grocery list
  ? Given I have an empty grocery list
  ? When I add an item to the list
  ? Then I can access that item from the grocery list

Warnings:

1) Scenario: Item added to grocery list - features/add-item.feature:6
   Step: Given I have an empty grocery list - features/add-item.feature:7
   Message:
     Undefined. Implement with the following snippet:

       Given('I have an empty grocery list', function (callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });

2) Scenario: Item added to grocery list - features/add-item.feature:6
   Step: When I add an item to the list - features/add-item.feature:8
   Message:
     Undefined. Implement with the following snippet:

       When('I add an item to the list', function (callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });

3) Scenario: Item added to grocery list - features/add-item.feature:6
   Step: Then The grocery list contains a single item - features/add-item.feature:9
   Message:
     Undefined. Implement with the following snippet:

       Then('The grocery list contains a single item', function (callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });

4) Scenario: Item accessible from grocery list - features/add-item.feature:11
   Step: Given I have an empty grocery list - features/add-item.feature:12
   Message:
     Undefined. Implement with the following snippet:

       Given('I have an empty grocery list', function (callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });

5) Scenario: Item accessible from grocery list - features/add-item.feature:11
   Step: When I add an item to the list - features/add-item.feature:13
   Message:
     Undefined. Implement with the following snippet:

       When('I add an item to the list', function (callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });

6) Scenario: Item accessible from grocery list - features/add-item.feature:11
   Step: Then I can access that item from the grocery list - features/add-item.feature:14
   Message:
     Undefined. Implement with the following snippet:

       Then('I can access that item from the grocery list', function (callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });

2 scenarios (2 undefined)
6 steps (6 undefined)
0m00.000s

لم يتم تضمين ملف world.js في هذه المرحلة.

@ dunlop-ben ، يرجى الاطلاع على سجل التغيير حول الفرق بين الإصدار 1.0 و 2.0 المرشحين للإصدار. تم تغيير طريقة تحديد الخطوات ، ويبدو أن المثال الخاص بك يستخدم بناء جملة 1.0.

jeffmath لا شيء يبدو خطأ بالنسبة لي. لدينا اختبارات الميزات التي تتحقق من أن شيئًا مثل مثالك البسيط يعمل. إعادة الإنتاج على جهاز Mac ، يعمل كما هو متوقع بالنسبة لي. ما هو إصدار العقدة الذي تقوم بتشغيله؟ ومن المسارات يبدو أنك على جهاز الويندوز ، فهل هذا صحيح؟

charlierudolph - شكرا. لقد بحثت في هذا وجربت بعض الأمثلة المختلفة بنتيجة مماثلة. لقد حاولت أيضًا استخدام تعريف الميزة والخطوة هنا: http://cucumber.github.io/cucumber-js/

أشعر وكأنني يجب أن أفتقد خطوة و / أو ملفات. إذا كان هناك أي مكان يمكنك توجيهي إليه ، فسيكون ذلك رائعًا. لم يحالفني الحظ كثيرًا في قراءة الوثائق على Github.

charlierudolph Node 6.4.0 على Windows 7

charlierudolph لدي مشكلة مماثلة. أنا أتابع بالضبط https://github.com/cucumber/cucumber-js/blob/master/docs/nodejs_example.md وما زالت المشكلة تحدث.

الإعداد الخاص بي هو

  • NODE 7.4.0
  • نظام التشغيل: Windows 10
  • الخيار 2.0.0 -rc.6

jeffmathTheAdamW آسف ولكن ليس لدي جهاز ويندوز وبالتالي لا يمكن تتبع حقا هذا إلى أسفل. نحن نستخدم appveyor لإجراء اختباراتنا على جهاز windows ولا أعرف ما هو الفرق. هل يمكن لأحدكم أن يحاول التعمق في هذا الأمر؟ يسعدني تقديم أي مساعدة ممكنة

بالنسبة لي ، تعمل إذا كتبت ./node_modules/.bin/cucumberjs ولكن ليس إذا كتبت فقط cucumberjs المثبت عالميًا (نفس الإصدار 2.0.0-rc.6 ).

نفس الخطأ هنا: لا توجد طريقة للخيار للعثور على تعريفات الخطوة. وجود نفس بنية المجلد يعمل في لينكس.

  • العقدة. 4.4.0 و 4.6
  • نظام التشغيل: Windows 10
  • الخيار 2.0.0 -rc.6

هل هناك أي طريقة لفرض مسار / مجلد / نمط تعريفات الخطوة؟
لم تنجح خدعة MartinDelille في راجع للشغل بالنسبة لي.

أواجه نفس المشكلة فجأة ، كان الخيار على ما يرام في تنفيذ النصوص حتى صباح اليوم. ليس لدي فكرة ما هو الخطأ في ذلك.

أقوم بتشغيل الميزة عن طريق النقر بزر الماوس الأيمن على منجم روبي ومن سطر الأوامر باستخدام الأمر cucumber -r features/chatstep.feature أحصل على نفس النتيجة.

هل يمكن لأي شخص الرجاء المساعدة

معطى (/ ^ أقوم بتشغيل "([^"] *) "$ /) do | arg1 |
انتظار # اكتب هنا رمزًا يحول العبارة أعلاه إلى إجراءات ملموسة
نهاية

اضطررت إلى الرجوع إلى الإصدار 1.3.1 لإنجاحه.
إنه لا يعمل حتى في Centos.

في 25 يناير 2017 21:32 ، كتب "Mrityunjeyan S" [email protected] :

أواجه نفس المشكلة فجأة ، الخيار كان جيدًا
تنفيذ النصوص حتى صباح اليوم. ليس لدي أي فكرة ما هو الخطأ
معها.

أقوم بتشغيل الميزة عن طريق النقر بزر الماوس الأيمن على روبي منجم ومن سطر الأوامر باستخدام
الأمر cucumber -r features / chatstep.feature أحصل على نفس النتيجة.

هل يمكن لأي شخص الرجاء المساعدة

-
أنت تتلقى هذا لأنك علقت.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/cucumber/cucumber-js/issues/718#issuecomment-275224435 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/ALjDKMNdggk1Gh-x_q3KRuvlpN5f_0cOks5rV7E9gaJpZM4LhJZO
.

jbgraug : ما الذي

حاولت باستخدام RC 2.0.6 & RC 2.0.0. لم أستطع أن أجعله يعمل في لينكس أو
windows لأن الخيار لم يتمكن من العثور على تعريفات الخطوة ، ولا حتى مع
الخيار -r.

يوم الخميس ، 26 يناير 2017 ، الساعة 6:18 صباحًا ، Mrityunjeyan S [email protected]
كتب:

jbgraug https://github.com/jbgraug : ما الذي قمت بخفضه ؟ ماذا كان اور
الإصدار السابق قبل الرجوع إلى إصدار أقدم

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/cucumber/cucumber-js/issues/718#issuecomment-275310070 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/ALjDKGbyYXvsjlLv-dlz6bnHMfPK7t05ks5rWCypgaJpZM4LhJZO
.

jbgraug أعتقد أن الخيار قد gherkin مجمعة معه من الإصدار 2.0؟ أقوم حاليًا بتثبيت 1.3.14 ، وهو يقول fetching gherkin وهو ما لم ألاحظه مطلقًا أثناء تثبيت إصدارات أعلى من 2.0

@ get2jeyan استنادًا إلى سطر الأوامر ومقتطفات الاختبار ، أعتقد أنك تتحدث عن cucumber-ruby . في حين أن هذين المشروعين مرتبطان بمحاولة تنفيذ إطار الخيار للغات كل منهما ، إلا أنهما لديهما عدد من الاختلافات.

charlierudolph شكرًا لك على التدخل.

إنه يعمل الآن بالمناسبة!

charlierudolph بالضبط ما قاله @ MartinDelille ، يعمل بشكل جيد عبر npm -S مع ./node_modules/.bin/cucumber.js ، لكن ليس عبر npm -g مع /usr/local/bin/cucumber.js ، يجد وينفذ الخطوات ، لكن بطريقة ما ينساهم بعد ذلك.

macOS + Node.js 7.5.0 + Cucumber.js 2.0.0-rc.7
التسمية windows specific مضللة

kozhevnikov شكرا على التحديث. كانت جميع التقارير حتى الآن على أحد النوافذ (ولم أتمكن من إعادة إنشائها على جهاز Mac المحلي الخاص بي باستخدام التثبيت المحلي) من الصعب تخيل أن التثبيت العالمي مختلف إلى حد ما ولكن على الأقل يمكنني الآن التحقيق فيه.

أحصل على نفس المشكلات على windows باستخدام موجه الأوامر من خلال cygwin ربما هذه هي المشكلة؟ حتى أنني قمت بنسخ الكود مباشرة من المثال.

الميزة: رياضيات بسيطة
من أجل القيام بالرياضيات
كمطور
أريد زيادة المتغيرات

السيناريو: رياضيات سهلة
بالنظر إلى متغير معين إلى 1
عندما أقوم بزيادة المتغير بمقدار 1
ثم يجب أن يحتوي المتغير على 2

مخطط السيناريو: أشياء أكثر تعقيدًا
نظرا لمتغير معين ل

Examples:
  | var | increment | result |
  | 100 |         5 |    105 |
  |  99 |      1234 |   1333 |
  |  12 |         5 |     18 |

Cucumber.defineSupportCode (الوظيفة (السياق) {
var setWorldConstructor = Context.setWorldConstructor ؛
var معطى = السياق
var عندما = السياق ومتى
var ثم = السياق ثم

///// عالمك /////
//
// اتصل بـ "setWorldConstructor" مع عالمك المخصص (اختياري)
//

var CustomWorld = function () {} ،

CustomWorld.prototype.variable = 0 ،

CustomWorld.prototype.setTo = وظيفة (رقم) {
this.variable = parseInt (number) ؛
} ؛

CustomWorld.prototype.incrementBy = الوظيفة (العدد) {
this.variable + = parseInt (number) ؛
} ؛

setWorldConstructor (CustomWorld) ؛

///// تعريفات خطوتك /////
//
// استخدم "معطى" و "متى" و "ثم" للإعلان عن تعريفات الخطوة
//

معطى (/ ^ متغير مضبوط على (\ d +) $ / ، الوظيفة (رقم) {
this.setTo (رقم) ؛
}) ؛

عندما (/ ^ I زيادة المتغير بواسطة (\ d +) $ / ، الوظيفة (رقم) {
this.incrementBy (العدد) ؛
}) ؛

ثم (/ ^ يجب أن يحتوي المتغير على (\ d +) $ / ، الوظيفة (رقم) {
إذا (this.variable! = parseInt (number))
رمي خطأ جديد (يجب أن يحتوي المتغير على + رقم +
'لكنه يحتوي على' + this.variable + '.') ؛
}) ؛
})

تلقيت هذا الخطأ "ReferenceError: معين غير معرّف"
أقوم بتشغيل cucumber.js و ~ / node_modules / .bin / cucumber.js باستخدام اسم الملف المحدد ويؤدي ذلك دائمًا إلى حدوث خطأ. يمكنني تشغيل الخيار مع الياقوت دون أي مشاكل ولكن لا يمكنني تشغيل الخيار

على ما يرام. أعتقد أنني اكتشفت ذلك.

عند استخدام تثبيت عالمي للخيار لإجراء اختبارات الميزات ، فأنت لا تزال تحدد رمز الدعم من خلال طلب التثبيت المحلي للخيار. حقيقة أن هاتين الحالتين مختلفتين تؤدي إلى عدم تحميل تعريفات الخطوة.

هل هناك أي سبب يمنعك من استخدام التثبيت المحلي لتشغيل الأمر؟ أفعل ذلك على نظام Mac بإضافة "./node_modules/.bin" إلى طريقي.

لا أحب فكرة محاولة إجراء هذا العمل من خلال محاولة التثبيت العالمي طلب التثبيت المحلي للحصول على تعريفات الخطوة. أنا أيضًا لا أحب التثبيت العالمي لأنه يجعلك تضطر إلى تحديد أشياء مثل وحدات التجميع من خلال مسارها المطلق.

إذا كان هذا ممكنًا على windows ، فأنا أفضل تحديث الوثائق فقط للإشارة إلى أنه لا يمكن استخدام هذا كتثبيت عالمي.

نقطتان صغيرتان حول إزالة التثبيت العالمي:

  1. ستحتاج جميع المستندات إلى التحديث ، وليس فقط المستندات الرسمية ولكن الكثير من الأطر الشائعة الأخرى التي تم إنشاؤها في الأعلى. كنت أتابعها عندما واجهت هذا وكان من المحبط تصحيح الأخطاء لشخص بدأ لتوه في JavaScript / Node.js / Cucumber.js

  2. يتم ترميز الكثير من IDEs والمكونات الإضافية للإشارة إلى global. كما أن إضافة متغير بيئة خارج ملف تعريف bash (أي تشغيل WebStorm من خلال Spotlight) على macOS يعد أمرًا معقدًا ويتغير من إصدار إلى إصدار.

همم. يمكننا إضافة خيار CLI الذي يسمح للمستخدم بتحديد مكان مثيل الخيار المحلي؟ يمكن أن يكون الافتراضي هو process.cwd() + /node_modules/cucumber والذي يجب أن يغطي معظم الحالات.

charlierudolph بعد الإبلاغ عن الخطأ في الأصل ، أدركت أنني بحاجة إلى استخدام Cucumber-JVM ، على أي حال ، نظرًا لأن الكود الذي كنت أحتاج إلى اختباره تمت كتابته في Scala.js. ولكن عندما أحتاج بعد ذلك إلى اختبار جافا سكريبت ، يبدو الحل البديل سهل التنفيذ. شكرا لك على حل المشكلة.

سيكون الأمر صعبًا ، مما أفهمه أن Node لديها الكثير من حالات الحافة ، لذلك على الأقل سيتعين عليها اجتياز الوالدين حتى تعثر على الحزمة المحلية أو تصل إلى جذر محرك الأقراص ، ولا أعرف مدى شيوع استخدام المجلدات العالمية في مجتمع Node.

jeffmathkozhevnikov ها هي أفكاري المحدثة حول هذا

  1. أنا بخير مع خيار cli الذي يسمح للمستخدم بتحديد المسار إلى الخيار المحلي. إذا لم يتم توفيره فإنه يستخدم المثيل المنفذ.
  2. سيؤدي استخدام هذا الخيار إلى التحقق من صحة الإصدار للتأكد من أن التثبيت المحلي / العالمي هو نفس الإصدار تمامًا وإلا فقد لا تعمل الأشياء كما هو متوقع. إذا لم يكن الأمر كذلك ، فسيؤدي ذلك إلى ظهور خطأ يطلب من المستخدم محاذاة الإصدارات من فضلك.
  3. سيتم إهمال هذا الخيار على الفور وسيأتي مع تحذير للتوقف عن استخدام التثبيت العام واستخدام التثبيت المحلي فقط بدلاً من ذلك.
  4. ستتم إزالة هذا الخيار في الإصدار الرئيسي التالي.

لقد وجدت مشكلة مماثلة أثناء محاولتي إنشاء مكتبة للاختبارات الشائعة. فكرتي هي إعادة استخدام الاختبارات عبر مشاريع مختلفة.

لقد قمت ببناء حزمة اختبارات مشتركة تسمى _roi -ctional-tests_ التي أود استخدامها في مشاريع أخرى. حتى الآن ، قمت بربط الحزمة بـ _npm link_ ثم حاولت توجيه الخيار إلى الميزات الموجودة في اختبارات _roi-الوظيفية ، شيء من هذا القبيل:

./node_modules/.bin/cucumberjs ./node_modules/roi-functional-tests/features

لكني أحصل على هذا:

Warnings:

1) Scenario: Curl request - node_modules/roi-functional-tests/features/home.feature:3
   Step: Given I make curl request to "/" - node_modules/roi-functional-tests/features/home.feature:4
   Message:
     Undefined. Implement with the following snippet:

       Given('I make curl request to {arg1:stringInDoubleQuotes}', function (arg1, callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });

هل يمكن استيراد تعريفات الخيار من خارج دليل العمل؟

jramcast نعم. لكنك ستحتاج إلى استخدام علم cli --require .

حاولت بالفعل استخدام العلم --require :

./node_modules/.bin/cucumberjs --require ./node_modules/roi-functional-tests/features ./node_modules/roi-functional-tests/features

لكني حصلت على نفس النتيجة.

من المحتمل أن npm link قد يتسبب في عدم عثور الخيار على التعريفات؟

لذلك أجريت نفس الاختبار بدون npm link . لقد قمت بنشر الحزمة وتثبيتها وكل شيء يعمل بشكل جيد بمجرد الاتصال بـ:

./node_modules/.bin/cucumberjs ./node_modules/roi-functional-tests/features

أعتقد أنه عند ربط الحزمة ، يقوم require بتحميل الخيار المثبت داخل دليل الحزمة المرتبطة ( node_modules/roi-functional-tests/node_modules/cucumber ). ومع ذلك ، إذا تم تثبيت _roi -ctional-tests_ ، فإن npm تعمل على تسطيح شجرة التبعية واستخدام مثيل الخيار المثبت أسفل وحدات عقدة المشروع ( node_modules/cucumber )

لديك نفس المشكلة.

إصدار الخيار: "cucumber": "^ 2.0.0-rc.9"
إصدار الويندوز: 10
إصدار العقدة: 6.10.3 LTS & 7.10

لا يعمل في IDE أو مثيل عالمي للخيار ، ولا يعثر على الخطوات أبدًا على الرغم من تنفيذها بشكل صحيح.

إذا اتصلت بـ cucumber.js من داخل node_modules dir ، فهذا يعني أنه يعمل.

هل لدى أي شخص أي اقتراحات حول كيفية إصلاح هذه المشكلة؟

يحدث هذا أيضًا على MacOS Sierra 10.12.4
إصدار العقدة 7.10

تم الرجوع إلى Cucumber الإصدار 1.3.0 ، ويعمل بشكل جيد الآن استدعاءه عبر cmd باستخدام مثيل عالمي ويعمل في IDE.

مرحبًا charlierudolph ،
انا في الخطوة التالية (انتقل من الإصدار 60 إلى هنا)
أقوم بتشغيل المثيل المحلي فقط ولكن لم يتم التعرف على تعريفات الخطوة الخاصة بي أثناء تشغيل ملف الميزة
image
ملف الميزة وملفات تعريف الخطوة في المكان الصحيح (لقطة شاشة مرفقة)
لماذا لم يتم تحديد خطوتي؟

كان لدي إشارة Cucumber إلى إصدارات 1.X في package-lock.json
"wdio-cucumber-framework":

    "cucumber": {
      "version": "1.3.3",
      "resolved": "https://registry.npmjs.org/cucumber/-/cucumber-1.3.3.tgz",
      "integrity": "sha1-Za+2Xy+T9y2teN8qterPFGCf7C8=",
      "dev": true
    },

"webdriverio-cucumber-js":  

   "cucumber": {
      "version": "1.2.2",
      "resolved": "https://registry.npmjs.org/cucumber/-/cucumber-1.2.2.tgz",
      "integrity": "sha1-KEZJEf8arfwOZjTXY2q69mHGaJI="
    },

لقد غيرت هذين الإصدارين إلى 2،3،1
إصدار العقدة الخاص بي هو 8.0.0
ولكن لا يزال لم يتم التعرف على تعريف الخطوة
اي فكرة؟

تضمين التغريدة

إذا كنت تستخدم webdriverIO مع عداء الاختبار الخاص به بدلاً من الوضع المستقل ، فستحتاج إلى استخدام الإصدار 1.x من cucumber-js ، ويفضل 1.3.3 بدلاً من 2.x لأن عداء الاختبار لا يدعم الإصدار الجديد والطريقة الجديدة في تنفيذ تعريفات الخطوة.

لقد عدت إلى [email protected] القديم لأنني أستخدم عداء الاختبار المطلوب لنموذج كائن الصفحة والتأكد من تشغيل جميع الأوامر بشكل متزامن.

تضمين التغريدة
شكرا على الرد. لقد رجعت وشغلت الاختبار لا يزال لم يتم التعرف على تعريف الخطوة

عندما جربت الأمر مع -r ، أحصل على خطأ syntex في ملف الميزة ...
C: /webdriverio-test/node_modules/.bin/cucumber-js -r features / customer-validation.feature

ج: \ webdriverio-testfeatures \ customer-validation. الميزة: 2
كمالك
^ ^

صيغة خاطئة: تعريف غير متوقع
في createScript (vm.js: 74: 10)
في Object.runInThisContext (vm.js: 116: 10)
في Module._compile (module.js: 533: 28)
في Object.Module._extensions..js (module.js: 580: 10)
في Module.load (module.js: 503: 32)
في tryModuleLoad (module.js: 466: 12)
في Function.Module._load (module.js: 458: 3)
في Module.require (module.js: 513: 17)
عند الطلب (داخلي / module.js: 11:18)
في C: \ webdriverio-test \ node_modules \ cucumberlib \ cliindex.js: 135: 16
في Array.forEach (أصلي)
في Cli.getSupportCodeLibrary (C: \ webdriverio-test \ node_modules \ cucumberlib \ cliindex.js: 134: 24)
في Cli.(C: \ webdriverio-test \ node_modules \ cucumberlib \ cliindex.js: 144: 39)
في Generator.next ()
في Generator.tryCatcher (C: \ webdriverio-test \ node_modules \ bluebird \ js \ release \ util.js: 16: 23)
في PromiseSpawn._promiseFulfilled (C: \ webdriverio-test \ node_modules \ bluebird \ js \ release \ generators.js: 97: 49)

vvedachalam هل يمكنك من فضلك إنشاء هذا ودفعه إلى الريبو الخاص بك حتى أتمكن من تكراره؟

تضمين التغريدة
ألق نظرة من فضلك
https://github.com/vvedachalam/Ruffer-Test

تضمين التغريدة

انقل مجلد step_definitions داخل مجلد الميزات وسيبدأ العمل ويتعرف على تعريفات الخطوة. المشكلة الوحيدة التي تم طرحها بعد ذلك هي أن موقع ملف txtdetails.txt الخاص بك غير صحيح.

تضمين التغريدة
آه ، آسف ، لم أدفع هذا التغيير.
إذا رأيت لقطة الشاشة أعلاه ، فإن تعريف الخطوة موجود داخل مجلد الميزات فقط.
نأمل أن يكون المحتوى:
المحتوى = fs.readFileSync ('../../ txndetails.txt'، 'utf8') ؛

ثم لماذا لا يمكنني لصق تعريف الخطوة لملف الميزة في بلدي المحلي؟
هل إعدادي غير صحيح؟

تضمين التغريدة

إنه يعمل بالنسبة لي.

الشيء الوحيد الذي فعلته هو نقل step_definitions إلى دليل الميزات

كما أنني قمت بتثبيت npm [email protected] - حفظ ديف

ثم ركض node_modules / cucumber / bin / cucumber.js features /

GeeChao الكل يعمل بشكل جيد. لقد قمت بعمل حلقة For داخل بيان Then الذي أدى إلى حدوث المشكلة. هل من الممكن استخدام تعريف For loop داخل الخطوة؟
لا أرغب في استخدام مثال حيث يتعين علي تشغيل الخطوة "ثم" بناءً على بيانات ملف نصي (اختبار يعتمد على البيانات)
أعلم أن هذا السؤال لا يتعلق بهذا الموضوع ولكني فقط فكرت في ما إذا كان بإمكاني الحصول على بعض المساعدة.

GeeChao طيب ، مرة أخرى هذا غلطتي السخيفة. لم يتم ضبط متغير التكرار بشكل صحيح (نسيت مقارنة الطول). شكرا مرة أخرى لدعمكم

بالنسبة لي ، بصفتي مبتدئًا ، كان السبب في الخطأ هو تمرير سلسلة بدلاً من regex إلى الخطوات ؛

Then('I log in as (.*)', ...)

بدلا من

Then(/I log in as (.*)', ...)

خطأ بسيط ، ولكن نأمل أن يكون مفيدًا لشخص آخر بدأ للتو.

vvedachalam هل

@ sancy2017 انتقلت إلى أداة TestCafe من WDIO. لذلك قد لا أتمكن من إخبارك بالحل على الفور. اسمحوا لي أن أعرف بالضبط ما هي المشكلة التي تواجهها

الحل البسيط لهذا الخطأ هو npm install [email protected] - save-dev
ثم قم بتشغيل الاختبار .. npm test

واجهت نفس المشكلة "لم يتم التعرف على تعريفات خطوة الخيار". نجح تغيير اسم الدليل من "الخطوات" إلى "step_definitions" بالنسبة لي.

أرى أن معظم الأشخاص لديهم تعريفات step_definitions ضمن دليل الميزات ، وأعتقد أن الممارسة الأفضل هي تنفيذ الخطوات في دليل منفصل مثل src / step_definitions بدلاً من الاحتفاظ بالخطوات الموجودة ضمن دليل الميزات.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات