這是我第一次爲骨幹模型編寫javascript測試。
在網絡資源中尋找並沒有太多關於這個問題的項目。
我發現這個,Testing Backbone applications with Jasmine and Sinon,這是相當古老(mars 2001)。使用Jasmine測試骨幹模型
無論如何,我想知道:
1)有其他資源更多更新有關此主題的
2)我寫的文字(1)罰款或可以得到改善。
(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);
});
});
});
雖然是一個有趣的話題和問題,但您的問題的第二部分可能更適合http://codereview.stackexchange.com/ – 2012-07-18 19:30:04