I wish the doctest approach won over the BDD approach. I still find myself recreating the doctest approach in miniature...

Specifically I try to make a nice string representation of state, and then tests match off that state.

So for instance I don't want to say expect(x.length).toBe(0) (one syntax, Cucumber goes further in that syntactic direction). Because if the length is 1 then 1!=0 is a very opaque failure. Or if you do expect(x[0].attr).toBe("y") then you've tested one thing but you have to have another test for list length, other attributes, etc. Often you'll leave the others out, expecting them to be ok, but sometimes they aren't...

Investing in a good, stable, matchable string representation will give you a great tool for any number of tests, and it's not just a great tool to verify but also to debug your tests.

In elixir land, the doctest is a common sight. I wouldn't say it won out over the unit test, but it's still fairly common