- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在使用 Karma、Jasmine、Jasmine.Async、Sinon 和 Chai。
好消息...这个测试工作正常。依赖关系被 mock , spy 被调用,故意破坏测试对象导致测试失败。
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();
});
});
});
});
坏消息......以前正常的其他测试的负载现在由于奇怪的原因而失败。例如:错误:Backbone.history 已经启动
和TypeError: 'undefined' 不是一个对象(评估 'Backbone.Validation.mixin')
如果我注释掉代码片段
injector.require(["tiles/events-tile/events-view"], function (ev) {
subject = new ev(mockModel);
done();
});
然后其他测试再次工作。我以前发生过这样的事情,通常是因为 sinon 模拟没有得到恢复。 injector.clean()
调用似乎没有提供我所希望的 Elixir 。
最佳答案
根据我的经验,Squire 带来的麻烦远远多于它解决的问题。你在使用任何 jQuery 插件吗?我发现它们不能很好地与 squire 配合使用,并可能导致后续测试失败。如果是这样,请查看 this blog关于如何处理。
不过,我的建议是完全放弃 Squire。使用 sinon 并创建您自己的实用程序来准确地模拟您需要的东西,不仅可以使您的异步测试再次同步(被测代码是同步的),而且还可以鼓励创建更多可测试的代码。它还应该可以帮助您更深入地了解您的代码和库 - stub Backbone.history 以执行路由操作而不实际触发路由是一个很好的练习,也是添加到您的测试库的一个很棒的实用程序。
关于javascript - Squire 正在打破其他测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18811369/
我正在使用 Karma、Jasmine、Jasmine.Async、Sinon 和 Chai。 好消息...这个测试工作正常。依赖关系被 mock , spy 被调用,故意破坏测试对象导致测试失败。
我正在尝试将 Squire.js 作为 RequireJS 的依赖加载器。使用完全正常的网络浏览器来运行单元测试。我想使用 store 来处理我的模拟。但无法阻止 Squire 加载实际模块。 moc
我正在使用带有内联需求的 requirejs,例如: define(['someDep'], function(someDep) { return { someFn: function()
我正在尝试为 Backbone View 运行一些 Jasmine 单元测试,模拟 Squire 中的依赖项。 我的 View 的依赖项是一个 Baseview、一个 ICanHaz 模板和一个 i1
我想写JS测试。生产代码是用 RequireJS 编写的。 我找到了一个名为 Squire.js 的测试库:https://github.com/iammerrick/Squire.js/ 来自 Sq
我正在使用 Backbone 和 Backbone.Marionette 编写单页 JavaScript 应用程序。我正在使用 AMD 模块和 RequireJS 来帮助组织我的代码和管理依赖项。我也
我是一名优秀的程序员,十分优秀!