top | item 1314789

Steak: because Cucumber is for vegetarians

34 points| jkreeftmeijer | 16 years ago |jeffkreeftmeijer.com | reply

26 comments

order
[+] Tichy|16 years ago|reply
Somehow these "real language" extensions for Ruby remind me of the XML craze for Java. To feel right, everything had to be configured in an XML file for Javaists. In the same way, Rubyists apparently feel uneasy if something doesn't read like nice natural language.

I suspect both things are just cleverly masked procrastination....

[+] chc|16 years ago|reply
I agree in most cases, but Cucumber is one of the few times when it really felt beneficial to me. In most cases, I'd rather have straightforward Ruby code like we all understand or a simple YAML config file. But for a declarative spec framework, Cucumber works nicely. Try looking at a Cucumber spec vs. a Steak one and I think you'll see what I mean.

Then again, I am a vegetarian.

[+] jamesbritt|16 years ago|reply
" Rubyists apparently feel uneasy if something doesn't read like nice natural language."

Include me out.

With rare exception do I want to spend time trying to get something to read like English; it won't.

And I get tired of guessing which idiomatic "natural" phrasing is to be used for such things in other people's libraries.

Funny you should compare it to XML + Java, because it makes me think, "So you need to write an API. You've decided to make it read like natural English. Now you have two problems."

[+] jrockway|16 years ago|reply
Both are YAGNI. Java programmers want the non-programmers to configure their application, but of course, the XML files are actually critical code, so this can't happen. Similarly, Rubyists want "anyone" to write tests, so they figure that a natural language interface will allow that.

The reality is that you are the only person working on your app, and this is all a waste of your time. Just write regular code -- it's more readable and more concise.

[+] cschneid|16 years ago|reply
This is similar to Citrusbyte's Stories library (disclaimer, I work for Citrusbyte). http://github.com/citrusbyte/stories

It's a fairly lightweight layer on top of Test::Unit that lets you define nested stories and scenarios, integrating with Webrat (soon Capybara when we get to it).

One differentiating feature of Stories is that you can print out a readable PDF doc with each story, and the specific scenarios that make it up, leaving off the Test::Unit implementation of the scenarios. Because really, clients don't want to read even cucumber's specs. The nasty secret of Cucumber is that it's still programming. You have to be very explicit in what you setup, and what you expect. Even if your explicitness is hidden behind english, it's still there, and many client's just don't think like that. Heck, that's why they hire programmers.

[+] jamesbritt|16 years ago|reply
" ... because Cucumber is for vegetarians!"

Is this supposed to be some sort of slight, or a put-down?

Is there something lesser about being a vegetarian?

I'm curious, being, you know, a vegetarian and all.

[+] jedediah|16 years ago|reply
What advantage does this give over the built in integration tests?
[+] binspace|16 years ago|reply
Webrat and/or Capybara. Other than that, it is pretty much rspec on top of integration tests.
[+] eclark|16 years ago|reply
For me the disconnect of translating what I want into natural language is part of the benefit of Cucumber.
[+] shykes|16 years ago|reply
I like Cucumber better. Plain language means you could use it without being a rubyist.

I'd like to see a repository of Cucumber tests for basic HTTP and DOM interaction, with implementations in multiple languages.

[+] igorgue|16 years ago|reply
do you mean webrat steps?
[+] tarvaina|16 years ago|reply
How many times do we need to go through this cycle?

JBehave: text

RBehave (based on JBehave): code

RSpec Story Runner (based on RBehave): code, later also text

Cucumber (based on RSpec Story Runner): text

Steak (based on Cucumber): code

[+] binspace|16 years ago|reply
Steak is an extension of rspec and sortof inspired by Cucumber. I do remember Obie Fernandez had a blog post about a dsl that looks very similar a few years ago, however I cannot find it.

Maybe I'm going senile.

[+] mguterl|16 years ago|reply
We just started using steak and it is slowly replacing cucumber in our application.

We found the translation between English -> Step Definitions -> Ruby to be too onerous, especially after our stakeholders showed no interest in helping write the scenarios...

[+] binspace|16 years ago|reply
I'm happy with Rspec. It accomplishes the same thing with slightly different wording. Actually, I can have Steak in rspec.

  class Spec::ExampleGroup
    class << self
      alias_method :context, :feature
      alias_method :example, :scenario
    end
  end
[+] binspace|16 years ago|reply
Well, duh, Steak is an extension of rspec. Very nice. :-)
[+] clistctrl|16 years ago|reply
I know this is hacker news... but I was honestly disappointed when the article had nothing to do with Steak.
[+] benatkin|16 years ago|reply
I was disappointed that I couldn't read the README in the git repo without a scrolling past a picture that has nothing to do with BDD.