vowsjs / kyuri

A node.js cucumber implementation with a few extra asynchronous keywords. supports 160+ languages and exports to VowsJS stubs
http://prenup.nodejitsu.com
198 stars 19 forks source link

Step Reuse #21

Open benjamine opened 12 years ago

benjamine commented 12 years ago

Maybe I'm missing something, but it looks like the current implementation is not compatible with one of the greatest features when using gherkin: Step defintion reuse!

That means, I want to define steps (ie. methods) that are mapped to gherkin lines based on a regular expression. Maybe kyuri is not that far from that, with something like this (modified from the README example):


vows.describe('Addition').addBatch({
  "Add two numbers": {
    "GIVEN I have entered 50 into the calculator": {
          topic: function () {
            Given('I have entered 50 into the calculator');
          },
            "AND I have entered 70 into the calculator": {
              topic: function () {
                Given('I have entered 70 into the calculator');
              },
                "WHEN I press add": {
                  topic: function () {
                   When('I press add');
                  },
                    "THEN the result should be 120 on the screen": function () {
                      Then('the result should be 120 on the screen);
                    },
                }
            }
        }
  }
}).export(module);

then on runtime, those methods could use regex to call the appropiate step method defined somewhere else. Given, When, and Then methods could be implemented easily. It could be just a flag for kyuri to generate tests like this.

benjamine commented 12 years ago

Sorry for the delay, I tried what you said on the google.com search homepage textbox:

I tried debugging a little and I have screenshot I think that could help, here it is:

http://i39.tinypic.com/b8spqb.png

the screenshot is at the moment I pressed backslash (alt+keyatrightofzero) in the twitter.com search textbox, noticed that for some reason exitInsertMode is being called on keydown)