This is the first time I am writing a javascript test for the Backbone model.
Looking at a web resource, there are not many subjects on this subject.
I found this one, Testing basic applications with Jasmine and Sinon , which is pretty old (mars 2001).
In any case, I would like to know:
1) there are other resources more updates on this
2) the text I wrote (1) is good or can be improved.
(1)
describe('User model', function () { beforeEach(function () { this.model = new User(); this.collection = new UserCollection(); }); describe('When creating models', function () { it('the url should be equal at corresponding api_get_users value', function () { expect(this.model.url()).toEqual(backendRouter.generate('api_get_users')); }); describe('when no id is set', function () { it('should return the collection URL', function () { expect(this.model.url()).toEqual(this.collection.url); }); }); describe('when id is set', function () { it('should return the collection URL and id', function () { this.model.set({id: 1}); expect(this.model.url()).toEqual(this.collection.url + '/' + this.model.get('id')); }); }); }); describe('when fetching model from server', function () { beforeEach(function () { this.model.set({id: 1}); this.fixture = this.fixtures.Users.valid; this.fixtureResponse = this.fixture.response.users[0]; this.server = sinon.fakeServer.create(); this.server.respondWith( 'GET', backendRouter.generate('api_get_users') + '/' + this.model.get('id'), JSON.stringify(this.fixtureResponse) ); }); afterEach(function () { this.server.restore(); }); it('should make the correct request', function () { this.model.fetch(); expect(this.server.requests.length).toEqual(1); expect(this.server.requests[0].method).toEqual('GET'); expect(this.server.requests[0].url).toEqual(this.model.url()); }); it('should the response not change', function () { this.model.fetch(); this.server.respond(); expect(this.fixtureResponse).toEqual(this.model.attributes); }); it('should exhibit mandatory attributes', function () { expect(this.model.get('id')).toBeGreaterThan(0); }); }); });
source share