Adding yesterday discussion of JS libs for unit-testing in

On Mon, Oct 13, 2014 at 5:01 PM, Timur Sufiev <> wrote:

> Hello folks!
> Discussing the proposed Sinon.js dependency to Horizon on the last meeting
> has brought quite an expected question: why should we add it when there is
> already such wonderful testing framework as Jasmine? And if you need some
> testing feature present in Jasmine, why not rewrite your QUnit test in
> Jasmine? I was not ready to answer the question at that moment so I took a
> pause to learn more about Jasmine capabilities compared to Sinon.JS.
> First of all, I googled to see if someone did this investigation before.
> Unfortunately, I haven't found much: judging from the links [1], [2] both
> Jasmine and Sinon.JS provide the same functionality, while Sinon.JS is a
> bit more flexible and could be more convenient in some cases (I guess those
> cases are specific to the project being tested).
> Then I had studied Jasmine/Sinon.JS docs and repos myself and have found
> that:
> * both project repos have lots of contributors and fresh commits
> * indeed, they provide roughly the same functionality: matchers/testing
> spies/stubs/mocks/faking timers/AJAX mocking, but
> * to use AJAX mocking in Jasmine, you need to use a separate library [5],
> which I guess means another xstatic dependency besides xstatic-jasmine if
> you want to mock AJAX calls via Jasmine
> * Sinon.JS has a much more comprehensive documentation [6] than Jasmine
> [3], [4]
> So, while Horizon doesn't have too many QUnit tests meaning that they
> could be rewritten in Jasmine in a relatively short time, it seems that in
> order to mock AJAX requests (the reason I looked to the Sinon.JS) in
> Jasmine another xstatic dependency should be added (Radomir Dopieralski
> could correct me here if I'm wrong). Also, I've found quite an interesting
> feature in Sinon.JS's AJAX mocks: it is possible to mock only a filtered
> set of server calls and let others pass through [7] - didn't find such
> feature in Jasmine ajax.js docs. On the other hand, reducing all JS
> unit-tests to one framework is good thing also, and given that Jasmine is
> officially used for Angular.js testing, I'd rather see Jasmine as the 'only
> Horizon JS unit-testing framework' than the QUnit. But then, again: want to
> have AJAX mocks => add 'jasmine-ajax' dependency to the already existing
> 'jasmine' (why not add Sinon.JS then?).
> Summarizing all the things I've written so far, I would:
> * replace QUnit with Jasmine (=remove QUnit dependency)
> * add Sinon.JS just to have its AJAX-mocking features.
> [1]
> [2]
> [3]
> [4]
> [5]
> [6]
> [7] search for 'Filtered requests'
> On Tue, Oct 7, 2014 at 1:19 PM, Timur Sufiev <> wrote:
>> Hello all!
>> Recently I've stumbled upon wonderful Sinon.JS library [1] for stubs and
>> mocks in JS unit tests and found that it can be used for simplifying unit
>> test I've made in [2] and speeding it up. Just before wrapping it as
>> xstatic package I'd like to clarify 2 questions regarding Sinon.JS:
>> * Are Horizon folks fine with adding this dependency? Right now it will
>> be used just for one test, but it would be useful for anybody who wants to
>> mock AJAX requests in tests or emulate timeout events being fired up
>> (again, see very brief and concise examples at [1]).
>> * Is it okay to include QUnit and Jasmine adapters for Sinon.JS in the
>> same xstatic package? Well, personally I'd vote for including QUnit adapter
>> [3] since it has very little code and allows for seamless integration of
>> Sinon.JS with QUnit testing framework. If someone is interested in using
>> Jasmine matchers for Sinon [4], please let me know.
>> [1]
>> [2]
>> [3]
>> [4]
>> --
>> Timur Sufiev
> --
> Timur Sufiev

Timur Sufiev
OpenStack-dev mailing list

Reply via email to