Yeah, I think an excessive usage of before and after hooks will help here, if we use unique identifiers for each test for easy grepping.
 
Something like describe(before(), describe(before(), describe(before(), it("ID28 - testing something"), after()), after()), after())... and so on and so forth. Never thought about it for some reason.
 
 
11.12.2013, 19:52, "Darren DeRidder" <[email protected]>:
We do something similar just using Mocha to test an Express.js API server. I wrote a little overview here: http://51elliot.blogspot.com/2013/08/testing-expressjs-rest-api-with-mocha.html

I had a lot of end-to-end functional tests initially with dependencies between test cases. i.e. test 2 depends on test 1 completing successfully. The dependency problems became apparent pretty quickly. In theory, you should be able to run a single test case from a single test suite, in isolation (using the "grep" command in mocha). Of course this means all the set-up and tear-down needs to be done on a case-by-case basis. For every test step in your sequence, you have to write some before and after scaffolding to set up the preconditions. I made reasonable progress towards test-case independence by putting a collection of setup and tear-down functions in a separate module, and calling them with test data from a json file. Now, for the parts that need to be tested individually, it's possible.

With test cases involving stateful operations, it was hard to stub things out fully. I only know of one utility that's capable of stubbing across modules (npm info gently).

hope that helps.

On Friday, November 15, 2013 5:53:50 AM UTC-5, Alex Kocharin wrote:

I want to test an api server, and I have a bunch of scenarios, for example:
"start server with config1" -> "create user1 on server" -> "create object1 under user1" -> "delete object1" -> "delete user1" -> "shutdown server"
"start server with config1" -> "create user1 on server" -> "create object2 under user1" -> "delete object2" -> "delete user1" -> "shutdown server"

With a bunch of asserts after every step. In the example above two scenarios starts the same, but start to differ later.

1) Normally, I want to run whole test suite as fast as possible. So ideally each step would be executed only once. If I just run all of them independently, every scenario would launch server itself, and it would be suboptimal.
2) In case of errors, I want to run a single scenario independently. If I just merge all of them manually to one long sequence of tests, I won't be able to do this.

So ideally I'm looking for a program that would transform all these scenarios to one honouring all the dependencies of each step.

Does something like this exist out there? What should I look for?

 

--
--
Job Board: http://jobs.nodejs.org/
Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en
 
---
You received this message because you are subscribed to the Google Groups "nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

--
--
Job Board: http://jobs.nodejs.org/
Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en
 
---
You received this message because you are subscribed to the Google Groups "nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to