سؤال

I'm using Vows.js to test some node.js which is creating records in a database. As a result of this it creates some test records in the database. I'd like to remove these records once the tests have run. Is there a way to run a cleanup function when a batch of tests is run in Vows?

هل كانت مفيدة؟

المحلول

You can define the teardown function in your context that is executed once all the tests in your context are run.

vows.describe('Foo').addBatch({
    'A Context' : {
       topic : { foo: 'bar' },
       'it works' : function (topic) { assert.equal(topic.foo, "bar"); },
       teardown : function (topic) { topic.foo = "baz" }
    }
});

You can see this in Vows own tests.

نصائح أخرى

If it were me, I would use a separate test database when running automated tests, and empty that database before each test run.

There's an open pull request for vows implementing afterSuite:

https://github.com/phstc/vows/commit/d5b40e85e924e06cca560b4d8d6a264528bbab2b

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top