Dom*_*ker 8 javascript requirejs jasmine karma-runner squirejs
我正在使用Karma,Jasmine,Jasmine.Async,Sinon和Chai.
好消息......这个测试工作正常.依赖被嘲笑,间谍被调用,故意破坏测试对象导致测试失败.
define(['chai', 'squire'], function (chai, Squire) {
var should = chai.should(),
async = new AsyncSpec(this),
subject, injector = new Squire();
describe('EventsView', function () {
describe('when an event is clicked', function () {
var mockModel, stub;
async.beforeEach(function (done) {
setFixtures('<div id="screen"></div>');
mockModel = {
toJSON: function () {
return {
dimensions: "hu1 vu2",
events: [{
date: "8/29/2013",
id: "8923",
title: "Fancy Show",
venue: "Lovely venue",
}, {
date: "8/29/2013",
id: "9034",
title: "Exciting Game",
venue: "Lovely stadium"
}],
id: 3566,
kind: "events",
title: "Top events this week"
};
},
fetch: function () {}
};
stub = sinon.stub();
injector.mock('tiles/events-tile/events-detail-model', Squire.Helpers.constructs({
fetch: stub
}));
injector.require(["tiles/events-tile/events-view"], function (ev) {
subject = new ev(mockModel);
done();
});
});
async.afterEach(function (done) {
injector.clean();
injector.remove();
done();
});
async.it('should attempt to fetch the event details', function (done) {
$('#screen').html(subject.$el);
$('.event').first().click();
stub.called.should.be.true;
done();
});
});
});
});
Run Code Online (Sandbox Code Playgroud)
坏消息......以前很好的其他测试的大量负载现在因为奇怪的原因而失败.例如:
Error: Backbone.history has already been started
和
TypeError: 'undefined' is not an object (evaluating 'Backbone.Validation.mixin')
如果我注释掉片段
injector.require(["tiles/events-tile/events-view"], function (ev) {
subject = new ev(mockModel);
done();
});
Run Code Online (Sandbox Code Playgroud)
然后其他测试再次工作.我曾经有类似的事情发生在此之前,它通常是由于一个没有得到恢复的sinon模拟.这个injector.clean()电话似乎没有提供我希望的灵丹妙药.
问题出在非 AMD 模块上。如果我没记错的话,当 Squire 创建新上下文时,它将在全局命名空间中创建非 AMD 模块的新实例。结果是您的代码和测试将引用不同的对象。我想我通过这样做成功解决了这个问题:
var injector = new Squire();
injector.mock("backbone", function() {
return Backbone;
});
Run Code Online (Sandbox Code Playgroud)
Squire 应该更好地处理非 AMD 模块。
| 归档时间: |
|
| 查看次数: |
1170 次 |
| 最近记录: |