# rspec

Published articles for rspec.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## From slow tests to slow production: Debugging with Stackprof

DevFeed: [From slow tests to slow production: Debugging with Stackprof](<https://devfeed.tech/articles/from-slow-tests-to-slow-production-debugging-with-stackprof-33519.md>)

Original publisher: [Read original article](<https://www.aha.io/engineering/articles/debugging-with-stack-prof>)

Published: 2026-08-13T00:00:00Z

Content type: tutorial

Language: en

Sources: [Aha! Engineering Blog](<https://devfeed.tech/sources/aha-engineering-blog.md>)

Topics: [debugging](<https://devfeed.tech/topics/debugging.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [RSpec](<https://devfeed.tech/topics/rspec.md>), [Databases](<https://devfeed.tech/topics/databases.md>)

Tags: [ci](<https://devfeed.tech/tags/ci.md>), [cpu-time](<https://devfeed.tech/tags/cpu-time.md>), [database](<https://devfeed.tech/tags/database.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [logs](<https://devfeed.tech/tags/logs.md>), [overhead](<https://devfeed.tech/tags/overhead.md>), [performance](<https://devfeed.tech/tags/performance.md>), [production-debugging](<https://devfeed.tech/tags/production-debugging.md>), [profiling](<https://devfeed.tech/tags/profiling.md>), [rspec](<https://devfeed.tech/tags/rspec.md>), [snapshots](<https://devfeed.tech/tags/snapshots.md>), [tests](<https://devfeed.tech/tags/tests.md>), [timing](<https://devfeed.tech/tags/timing.md>)

### AI overview

An investigation into tests that became six times slower traces the stall to code generating example data and Active Record callbacks. The article explains using Stackprof with RSpec to profile the test, including I/O time, and reports that the test spent 71% of its time sleeping.

### Source excerpt

One morning, a developer announced in our Slack channel that some tests were failing on our main branch. The cause of the failures was not obvious. No recent PRs seemed related, and neither the code nor the tests had changed in a long time. The test

## Upgrading Rails 4.2 to Rails 8: Count Sites, Not Warnings

DevFeed: [Upgrading Rails 4.2 to Rails 8: Count Sites, Not Warnings](<https://devfeed.tech/articles/upgrading-rails-4-2-to-rails-8-count-sites-not-warnings-39663.md>)

Original publisher: [Read original article](<https://www.gauravsarma.com/posts/2026-08-08_upgrading-rails-4-to-rails-8>)

Published: 2026-08-08T00:00:00Z

Content type: tutorial

Language: en

Sources: [Gaurav Sarma's Blog](<https://devfeed.tech/sources/gaurav-sarma-s-blog.md>)

Topics: [Rails](<https://devfeed.tech/topics/rails.md>), [upgrade](<https://devfeed.tech/topics/upgrade.md>), [version](<https://devfeed.tech/topics/version.md>), [Test coverage](<https://devfeed.tech/topics/coverage.md>), [RSpec](<https://devfeed.tech/topics/rspec.md>), [Docker Compose](<https://devfeed.tech/topics/docker-compose.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>)

Tags: [coverage](<https://devfeed.tech/tags/coverage.md>), [docker-compose](<https://devfeed.tech/tags/docker-compose.md>), [rails](<https://devfeed.tech/tags/rails.md>), [rspec](<https://devfeed.tech/tags/rspec.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [upgrade](<https://devfeed.tech/tags/upgrade.md>), [version](<https://devfeed.tech/tags/version.md>)

### AI overview

An account of upgrading a multi-tenant JSON API from Rails 4.2.7.1 to Rails 8. The author argues that estimates focused on version gates missed the actual risks, and describes how characterization tests, an extracted frontend, and containerized development reduced the work.

### Source excerpt

. [Upgrading Rails 4...

## Writing expressive RSpec tests for Ruby objects and Rails views

DevFeed: [Writing expressive RSpec tests for Ruby objects and Rails views](<https://devfeed.tech/articles/spec-tacular-ways-to-think-about-writing-expressive-rspec-30006.md>)

Original publisher: [Read original article](<https://engineering.freeagent.com/2026/07/07/spec-tacular-ways-to-think-about-writing-expressive-rspec/>)

Author: Simon Fish

Published: 2026-07-07T13:26:00Z

Content type: tutorial

Language: en

Sources: [FreeAgent](<https://devfeed.tech/sources/freeagent.md>)

Topics: [RSpec](<https://devfeed.tech/topics/rspec.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [render](<https://devfeed.tech/topics/render.md>)

Tags: [rails](<https://devfeed.tech/tags/rails.md>), [render](<https://devfeed.tech/tags/render.md>), [rspec](<https://devfeed.tech/tags/rspec.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ruby-on-rails](<https://devfeed.tech/tags/ruby-on-rails.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tooling](<https://devfeed.tech/tags/tooling.md>)

### AI overview

The article explains how to use RSpec expressively to separate test phases, clarify expected behavior, and document interfaces. It also discusses why this approach needs adjustment when testing Rails views, which are rendered templates rather than ordinary Ruby objects.

### Source excerpt

Using RSpec's functionality expressively helps to draw focus to the right parts of a test, but it's not always easy to understand how best to use it.

## Testing Rails Apps with FactoryBot and MiniTest

DevFeed: [Testing Rails Apps with FactoryBot and MiniTest](<https://devfeed.tech/articles/testing-rails-apps-with-factorybot-and-minitest-28292.md>)

Original publisher: [Read original article](<http://fuzzyblog.io/blog/rails/2022/07/27/testing-rails-apps-with-factorybot-and-minitest.html>)

Author: Fuzzygroup

Published: 2022-07-27T10:58:00Z

Content type: tutorial

Language: en

Sources: [Scott Johnson](<https://devfeed.tech/sources/scott-johnson.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [Code](<https://devfeed.tech/topics/code.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [RSpec](<https://devfeed.tech/topics/rspec.md>)

Tags: [factorybot](<https://devfeed.tech/tags/factorybot.md>), [rails](<https://devfeed.tech/tags/rails.md>), [rspec](<https://devfeed.tech/tags/rspec.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

A tutorial on testing Rails applications with FactoryBot and MiniTest. It explains how to define factories, use traits for different scenarios such as pools and hot tubs, and test Rails model methods. The article notes that RSpec is not required for FactoryBot.

### Source excerpt

Pizza courtesy of Pizza for Ukraine! Donate Now to Pizza for Ukraine This blog post looks at testing rails apps with FactoryBot and MiniTest - the default test framework which ships with Rails. It does not use RSpec and RSpec is NOT required for use with FactoryBot. Note: I believe that MiniTest is the name of the standard rails testing framework. Oddly I've had issues confirming that so if I'm wrong please feel free to tell me. Creating a Factory A factory is a pluralized file just as is a fixture. Factories live, generally, in the test/factories/ directory. Let's say that you were modeling swimming pools. You might have this factory: FactoryBot.define do factory :pool do user water_chemistry_type name { "Swimming Pool" } pool_type { "pool"} length {38} width {18} units { "feet"} volume_units {"gallons"} shallow_end_depth { 3} deep_end_depth {7.67} end end What the above code says: Define a factory named :pool Reference two other models - user and water_chemistry_type Have a bunch of attributes that define the pool Creating Two Specific Factories The power of something like FactoryBot comes, however, not when we have a single instance of anything but when we have multiple instances that we can use to test different scenarios. Let's say that I have both a pool and a hot tub. Those have commonalities but also differences. We can model those difference as traits. FactoryBot.define do factory :pool do user water_chemistry_type trait :swimming_pool do name { "Swimming Pool" } pool_type { "pool"} length {38} width {18} units { "feet"} volume_units {"gallons"} shallow_end_depth { 3} deep_end_depth {7.67} end trait :hot_tub do name {"Hot Tub"} pool_type {"hot_tub"} length { 6 } width { 6 } units { "feet"} volume_units { "gallons" } depth { 3 } end end end What this does is: Create a pool factory With two common attributes - user and water_chemistry_type Add a trait named "swimming" pool which defines the attributes for a swimming pool. Add a trait named "hot_tub" which def

## Back to Rails Test - Putting Rspec in the Rear View - Test Examples

DevFeed: [Back to Rails Test - Putting Rspec in the Rear View - Test Examples](<https://devfeed.tech/articles/back-to-rails-test-putting-rspec-in-the-rear-view-test-examples-28279.md>)

Original publisher: [Read original article](<http://fuzzyblog.io/blog/rails/2022/06/05/back-to-rails-test-putting-rspec-in-the-rear-view-test-examples.html>)

Author: Fuzzygroup

Published: 2022-06-05T12:54:00Z

Content type: tutorial

Language: en

Sources: [Scott Johnson](<https://devfeed.tech/sources/scott-johnson.md>)

Topics: [Rails](<https://devfeed.tech/topics/rails.md>), [test](<https://devfeed.tech/topics/test.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [RSpec](<https://devfeed.tech/topics/rspec.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [building](<https://devfeed.tech/tags/building.md>), [debugger](<https://devfeed.tech/tags/debugger.md>), [development](<https://devfeed.tech/tags/development.md>), [examples](<https://devfeed.tech/tags/examples.md>), [model](<https://devfeed.tech/tags/model.md>), [models](<https://devfeed.tech/tags/models.md>), [rails](<https://devfeed.tech/tags/rails.md>), [rspec](<https://devfeed.tech/tags/rspec.md>), [test](<https://devfeed.tech/tags/test.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

This work-in-progress blog post compares Rails' native testing framework with RSpec and presents practical Rails test examples. It covers running individual or complete test suites, inspecting rendered page content, checking form and table elements, validating lists and headings, and asserting database changes.

### Source excerpt

I find myself building a new application, Cartazzi, and since the "template app" I'm building from uses Rails Test not rspec, I'm back to the past using the native rails testing framework - something I probably last touched by in 2009. This blog post summarizes different Rails testing examples and is a work in progress as I come up with new examples. Thinks I Like About Rails Test It is fast Have I mentioned it is fast It is so, so fast It tells you when you write duplicate tests if the test "" block is the same Things I Dislike About Rails Test Lack of output formatting like rspec's nested documentation The inability to nest tests; yes thoughtbot's matchers may provide this but they are 2+ years out of date and unclear if they are still maintained Examples Running a Single Test rails test test/models/my_model.rb:22 Running All Tests rails test test/models/my_model.rb Examining the body of a page at runtime debugger response.body[0..250] debugger response.body.scan(/FOO/) Asserting a form exists with different elements Asserting a row exists within a table assert_select 'table' do assert_select 'tr td', 'user1@example.com' end Asserting a select tag exists within a form # this would find a select with an id of project_type assert_select 'select#project_type' Asserting a text area exists within a form This assumes that the form do block illustrated above is used. # this would find a textarea with an id of component_body-input assert_select 'textarea#component_body-input' Asserting text exists on an H1 element assert_selector "h1", text: "Foobar" Checking a list has 4 elements assert_select "ol" do |elements| elements.each do |element| assert_select element, "li", 4 end end Asserting a difference on a database creation operation assert_difference('LinkType.count') do result = LinkType.find_or_create(OpenStruct.new(context: "execution_url", name: "development")) assert_equal result.class, LinkType end Asserting there should be no difference in database results test "Pr

## Rails Test Basics

DevFeed: [Rails Test Basics](<https://devfeed.tech/articles/rails-test-basics-28258.md>)

Original publisher: [Read original article](<http://fuzzyblog.io/blog/rails/2020/01/27/rails-test-basics.html>)

Author: Fuzzygroup

Published: 2020-01-27T00:00:00Z

Content type: tutorial

Language: en

Sources: [Scott Johnson](<https://devfeed.tech/sources/scott-johnson.md>)

Topics: [Rails](<https://devfeed.tech/topics/rails.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [RSpec](<https://devfeed.tech/topics/rspec.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [dockerignore-usage](<https://devfeed.tech/tags/dockerignore-usage.md>), [errors](<https://devfeed.tech/tags/errors.md>), [factorybot](<https://devfeed.tech/tags/factorybot.md>), [rails](<https://devfeed.tech/tags/rails.md>), [rspec](<https://devfeed.tech/tags/rspec.md>), [skip](<https://devfeed.tech/tags/skip.md>), [test](<https://devfeed.tech/tags/test.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

A practical guide to classical Rails testing for a project using standard Rails tests instead of RSpec. It covers debugging with byebug, skipping tests, running tests with Rails commands, interpreting a confusing zero-test result, using FactoryBot, and writing assertions.

### Source excerpt

More than a decade using RSpec has left me flummoxed in terms of "classical" Rails testing. I'm on a new project built using the Jumpstart application template and all the tests are standard Rails tests so here's a quick recap that I wrote, well, to force myself to step back in time and go "old school". And if you don't like my version then you should really read this. And if you are using Devise for authentication then you really must read this. Making Tests Debuggable The ability to use byebug in a testing context for breakpoints and stepping through code is utterly invaluable. Here's what you need to do for that: Add byebug into a development, test group in Gemfile. Add the line require 'byebug' to the very top of test_helper.rb How Do You Skip a Test? You put the keyword 'skip' at the top of the test that you need to skip. This is equivalent to xit in RSpec. Running Tests The very basic of testing is nothing more than test execution so to run all model tests: rails test test/models/ and to run one file rails test test/models/user_test.rb and to run everything: rails test and to run with verbose mode: rails test -v test/models and to run verbosely and fail on the first test failure: rails test -v -f test/helpers/application_helper.rb and to run just one specific test: rails test test/controllers/labels_controller_test.rb:9 Note: RSpec is very good at running the next test if the line number shifts a bit (example you put in :8 but you added a line so its actually :9). With standard rails test, you get this madness: ❯ rails test test/controllers/projects_controller_test.rb:17 Running via Spring preloader in process 95090 Run options: --seed 52687 # Running: Finished in 0.010622s, 0.0000 runs/s, 0.0000 assertions/s. 0 runs, 0 assertions, 0 failures, 0 errors, 0 skips The 0 runs, 0 assertions, 0 failures, 0 errors, 0 skips can best be interpreted as: Yo! Hoser! I don't know what to do here so I'm going to confuse you deliberately. Ha Haw! Death to Fixtures; Viva La F

## Ruby Testing Technique - The Power and Stupidity of def foo

DevFeed: [Ruby Testing Technique - The Power and Stupidity of def foo](<https://devfeed.tech/articles/ruby-testing-technique-the-power-and-stupidity-of-def-foo-28300.md>)

Original publisher: [Read original article](<http://fuzzyblog.io/blog/rspec/2020/01/03/ruby-testing-technique-the-power-and-stupidity-of-def-foo.html>)

Author: Fuzzygroup

Published: 2020-01-03T00:00:00Z

Content type: tutorial

Language: en

Sources: [Scott Johnson](<https://devfeed.tech/sources/scott-johnson.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Rails](<https://devfeed.tech/topics/rails.md>), [Database](<https://devfeed.tech/topics/database.md>)

Tags: [activerecord](<https://devfeed.tech/tags/activerecord.md>), [database](<https://devfeed.tech/tags/database.md>), [factorybot](<https://devfeed.tech/tags/factorybot.md>), [rails](<https://devfeed.tech/tags/rails.md>), [rspec](<https://devfeed.tech/tags/rspec.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [testing](<https://devfeed.tech/tags/testing.md>), [validation](<https://devfeed.tech/tags/validation.md>)

### AI overview

A Ruby testing troubleshooting article describes debugging a failing FactoryBot factory for an Objective record in a Rails side project. The supplied excerpt identifies validation errors involving missing User and Organization associations and begins a technique of adding class and instance methods named foo to investigate the problem, but it ends before documenting the complete resolution.

### Source excerpt

I had an abysmal day yesterday coding on my side project. Ok - coding on one of my side projects. I had one of those days where you try to do something simple and NOTHING, NOT ONE DAMN THING, WORKS. Note: Every software engineer knows this type of day. They aren't days that you talk about with anyone in your life because you spend hours failing at something that you know is so damn simple that, if you can't make it work, you should honestly give up software engineering and go cut grass for a living. I refer to these days, when I have them, as spirit crushers / brain emasculators. And when they occur, I find that a nap (or a snickers bar) is the best medicine. All I was trying to do was make a simple factory work. For those who aren't deeply immersed in the world of software testing in ruby, a factory is a software method which creates a sample object that represents the actual object so it can be tested. Factories are used in place of actual objects, generally, because they run faster. Here was the definition of the factory: FactoryBot.define do factory :objective do name {Faker::Name.first_name} user organization objective_type okr_team quarter end end All this means is: Create an object named objective Give it a name attribute that is pulled from a library called Faker using the first_name method Give it a relationship back to the user object Give it a relationship back to the organization object Give it a relationship back to the objective_type object Give it a relationship back to the okr_team object Give it a relationship back to the quarter object Although this might seem complex, it is actually drop dead simple and something that I've probably done hundreds if not thousands of times. And yet, yesterday, all I could get was some variant on this censored backtrace: ActiveRecord::RecordInvalid: Validation failed: Organization must exist, User can't be blank, Organization can't be blank # /Users/sjohnson/.rvm/gems/ruby-2.6.5/gems/fabrication-2.21.0/lib/fabricatio

## How to Make Progress on a Side Project - Invert

DevFeed: [How to Make Progress on a Side Project - Invert](<https://devfeed.tech/articles/how-to-make-progress-on-a-side-project-invert-28327.md>)

Original publisher: [Read original article](<http://fuzzyblog.io/blog/side_project/2019/10/31/how-to-make-progress-on-a-side-project-invert.html>)

Author: Fuzzygroup

Published: 2019-10-31T00:00:00Z

Content type: opinion

Language: en

Sources: [Scott Johnson](<https://devfeed.tech/sources/scott-johnson.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [Code](<https://devfeed.tech/topics/code.md>), [RSpec](<https://devfeed.tech/topics/rspec.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [developer](<https://devfeed.tech/tags/developer.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [productivity](<https://devfeed.tech/tags/productivity.md>), [project](<https://devfeed.tech/tags/project.md>), [rspec](<https://devfeed.tech/tags/rspec.md>), [side-project](<https://devfeed.tech/tags/side-project.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

A developer explains how doing a side project first thing on workdays helped increase productivity. The article estimates that 75 minutes of focused work per week could total about 75 hours in a year, enough to build something substantial.

### Source excerpt

Because side projects are as ridiculous as someone doing push ups on top of a set of dueling pianos; Picture taken at Pete's Dueling Piano Bar, Austin, TX; Recommended Great Googly Moogly! My current side project is almost 10K lines of code in total or at least 5k lines (and yes there are tests, rspec, I don't know why it says 0 lines of tests): rake stats +----------------------+--------+--------+---------+---------+-----+-------+ | Name | Lines | LOC | Classes | Methods | M/C | LOC/M | +----------------------+--------+--------+---------+---------+-----+-------+ | Controllers | 1161 | 767 | 23 | 95 | 4 | 6 | | Helpers | 267 | 207 | 0 | 36 | 0 | 3 | | Jobs | 2 | 2 | 1 | 0 | 0 | 0 | | Models | 2151 | 1316 | 23 | 137 | 5 | 7 | | Mailers | 4 | 4 | 1 | 0 | 0 | 0 | | Channels | 8 | 8 | 2 | 0 | 0 | 0 | | JavaScripts | 4351 | 3599 | 0 | 183 | 0 | 17 | | Libraries | 1304 | 811 | 0 | 7 | 0 | 113 | +----------------------+--------+--------+---------+---------+-----+-------+ | Total | 9248 | 6714 | 50 | 458 | 9 | 12 | +----------------------+--------+--------+---------+---------+-----+-------+ That's big for a side project and it is particularly big for something that hasn't actually launched yet. When I was building this, I made a deliberate decision about how I approached this side project which dramatically increased my productivity. My decision, right from day 1, was to Invert. Normally we think of a side project as something you do after work so what I did was to do my side project as my first thing every day I worked on it. Here's my thinking on this: A side project is something that a developer does for his or her or their self (pronoun, pronoun, pick a pronoun). Self comes before work. For serious developers, those that build side projects, a side project is literally self care. Thus do it first thing. What I have found is that if you wait until after the day is done, you are just plain tired. Often you have all the best intentions of working on something but you simpl

## Behavior Driven Development in C#

DevFeed: [Behavior Driven Development in C#](<https://devfeed.tech/articles/behavior-driven-development-in-c-33385.md>)

Original publisher: [Read original article](<https://timkellogg.me/blog/2011/12/28/behavior-driven-development-in-c>)

Published: 2011-12-28T00:00:00Z

Content type: opinion

Language: en

Sources: [Tim Kellogg](<https://devfeed.tech/sources/tim-kellogg.md>)

Topics: [Behavior-driven development](<https://devfeed.tech/topics/bdd.md>), [C#](<https://devfeed.tech/topics/csharp.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [NUnit](<https://devfeed.tech/topics/nunit.md>), [RSpec](<https://devfeed.tech/topics/rspec.md>), [Test-driven development](<https://devfeed.tech/topics/tdd.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [bdd](<https://devfeed.tech/tags/bdd.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [nunit](<https://devfeed.tech/tags/nunit.md>), [rspec](<https://devfeed.tech/tags/rspec.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [testing](<https://devfeed.tech/tags/testing.md>), [unit-test](<https://devfeed.tech/tags/unit-test.md>), [unit-testing](<https://devfeed.tech/tags/unit-testing.md>)

### AI overview

The author explains why behavior-driven development became more manageable than conventional unit-test naming for complex code. They compare Ruby RSpec and .NET BDD approaches, and describe a simple BDD layer over NUnit to preserve its tooling and lower the barrier to contribution.

### Source excerpt

I've been a fan of Test Driven Development since I worked in an XP shop. But every time the work starts getting bigger and more complex I always struggle to not get lost in the magnitudes of tests. I remember many early-on conversations with my elders about unit test naming conventions. The [method]_[input]_[output] convention starts to break down badly when your inputs become things like mocks, or if there ends up being more than 1 or 2 inputs; same with outputs.When a coworker introduced me to BDD earlier this year, it really clicked and flowed naturally. The idea of writing tests so they read like sentences out of a book or spec seems like the answer to all my questions. The ruby rspec is beautiful:The organization of the tests forces you to focus on the expectations of your test and highlight descriptive assertions. This is especially useful for complicated setups with lots of mocks, etc. I put as much of my setup code in one of those before :each blocks, so that way the assertions are limited to simple inputs and one or two observations about the outputs.There's been a number of people in the .NET community that have attempted BDD but [imo] failed to grasp the simplicity. NBehave is a complete overhaul of unit testing that uses attributes like xUnit. As a result, NBehave doesn't really look at all like rspec - which really isn't a bad thing, necessarily. However, the thing I like about rspec is it's ability to describe things of arbitrary depth, which is handy when testing complex code:This spec is able to describe possible modes that the object under test can be in (complex inputs). This is made possible by rspec's arbitrary nesting depth. This is definitely a language feature that is much harder to implement in C#.My current approach to BDD in C# usually looks likeI think this is the simplest BDD layer I can slap on top of NUnit. And simple is important to me because (a) I do a lot of open source projects and I want to keep the barrier to entry for contributi