gpt4 book ai didi

javascript - 使用 Marionette.CompositeView 进行单元测试

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:35:35 25 4
gpt4 key购买 nike

通过使用 jasmine,我正在尝试测试一个返回 Marionette.CompositeView 的 javascript 模块。

这是 javascript 模块 (2) 和 javascript 单元测试 (1)。

我的问题是如何从 (1) 访问渲染 View ?
有关更多详细信息,请参阅代码注释。

附言:
1) javascript 模块可以生成正确的渲染 View 。
2) 当我运行测试时,javascript 控制台出现以下错误:backbone.marionette.min.js:9

Uncaught NoTemplateError: Could not find template: 'function (context, options) {
if (!compiled) {
compiled = compile();
}
return compiled.call(this, context, options);
}'

3) 由于我使用的是 handlebars,所以我以这种方式重写了 Marionette.Renderer.render:

enter code here
define([
'marionette'
], function (Marionette) {
Marionette.Renderer.render = function (template, data) {
return template(data);
};
});

(1)

(function () {
'use strict';
define([
// some code
], function (MyView) {
describe('Layout App - Header View ', function () {
beforeEach(function () {
this.view = new MyView({
currentUser: new Backbone.Model()
});
});

describe('Instantiation', function () {
it('should create a div element', function () {
expect(this.view.el.nodeName).toEqual('DIV'); // it works
});

});

describe("Rendering", function () {

it("returns the view object", function () {
console.log(this.view.render()); // undefined // why?
expect(this.view.render()).toEqual(this.view); // it fails
});
});
});
});
});

(2)

define([
// some code
], function (myTemplate, MyItemView) {
return Marionette.CompositeView.extend({
template: myTemplate,
itemView: MyItemView,
// some code
});

});

最佳答案

在其上调用render 方法,就像您对任何其他主干 View 所做的那样


beforeEach(function () {
this.view = new MyView({
currentUser: new Backbone.Model()
});

// render it
this.view.render();
});

关于javascript - 使用 Marionette.CompositeView 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11949377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com