骨干.视图测试输出不同于控制台输出
Backbone.View test output differs console output
我不理解Backbone.View.render()和。el的操作。在render()中我分配了这个。我期望看到的支持输出的属性,这些属性都在这里。. El在测试时返回预期的输出,并且. El在控制台中返回预期的输出。但是在测试中没有出现输出
下面是代码和测试(请忽略粗糙,我正在学习并努力保持测试绿色):
var RowLabelData = Backbone.Model.extend({});
var RowLabel = Backbone.View.extend({
initialize: function() {
this.for_attr = this.model.get("for_attr");
this.text_val = this.model.get("text_val");
this.el.setAttribute("for", this.for_attr);
},
render: function() {
$(this.el).html(this.text_val);
return this;
}
});
我用QUnit测试如下:
test_row_data = new RowLabelData({
for_attr: "id_username",
text_val: "Username:"
});
test_row_v = new RowLabel({
model: test_row_data,
tagName: 'label'
});
test_row_v.render();
test_row = test_row_v.el;
equal(test_row.textContent, "Username:");
equal(test_row.getAttribute("for"), "id_username");
// FAILS:
equal(test_row, '<label for="id_username">Username:</label>');
QUnit表示在上次测试中<<test_row>>返回<label></label>
。但是在JavaScript控制台,<<Test_row>>返回文本中期望的字符串。
主干文档说render()应该将所需的HTML放入el中,但我试图使用render()的默认行为,并且它在控制台中确实有效。为什么在测试中不起作用?
dira是对的,问题是Object与字符串的比较。
下面的测试代码创建了一个类似的元素,然后将该元素和测试对象转换为字符串进行比较:
new_label = document.createElement("label");
new_label.setAttribute("for", "id_username");
t = document.createTextNode("Username:");
new_label.appendChild(t);
equal(
$('<div>').append($(test_row).clone()).remove().html(),
$('<div>').append($(new_label).clone()).remove().html(),
"convoluted!"
);
这通行证。这些具有克苏鲁价值的咒语的控制台输出是"<label for="id_username">Username:</label>"
。
尽管它涉及到那些人类本不应该知道的事情,但勇敢的人,或者鲁莽的人,都能在这里发现这个神秘的秘密。
相关文章:
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- 输入到输出不会改变结果中的单词
- setTimeout()-除法Slider中的输出不正确
- JavaScript计算不同于Firefox的图像尺寸(?)
- Javascript/JSON输出不;t显示
- 为什么setTimeout输出不按顺序添加的数字
- 为什么{}+[]不同于({}+[])
- 新日期(2012,01)不同于新日期(2012-01)
- 是否可以与位于不同于html5网站呈现的服务器的网络套接字进行通信
- 为什么承诺的输出不是“1 2 3”而是“1 3 2”
- 下拉列表不同于手动选择和自动选择
- 为什么我的输出不是以 8 为基数
- 控制台输出不会出现在代码战争中
- Array.fill 不同于赋值上的文字 2D 定义
- 条形图输出不是预期的
- javascript post-submit不同于input-submit点击
- grunt contrib车把输出不同于车把npm任务
- 骨干.视图测试输出不同于控制台输出
- Crypto-Js不同于mcrypt的输出,当数据发生变化时进行加密
- Crypto-Js不同于mcrypt的输出