【问题标题】:Test knockout binding with Qunit fails与 Qunit 的测试敲除绑定失败
【发布时间】:2025-12-16 21:45:01
【问题描述】:

我正在编写一套在我的项目中常用的淘汰绑定,它变得越来越大,我需要测试。所以我试着用 Qunit 来做,这是一个基本的测试

module("Message binding");

test("When updating message observable with a splash message ", function () {
    var div = document.createElement("div");

    var message = ko.observable();

    ko.applyBindingsToNode(div, { message: message });

    message({ splash: "Test" });
});

编辑:在任何人添加蹩脚评论之前:D 我知道还没有 Assert,当我让绑定表现得像在实时环境中一样时,它就会出现

当我应用绑定时,它会使用空值触发绑定的更新方法(这是正确的,因为 observable 具有空值)

但是当我设置消息可观察 message({ splash: "Test" }); 更新方法不会再次触发。我当然可以自己调用 init 并更新方法,但是我没有使用 KO observable API,并且测试会有点反作用

【问题讨论】:

    标签: knockout.js qunit


    【解决方案1】:

    如果 Knockout 检测到该元素不是文档的一部分,它将处理用于跟踪元素绑定依赖关系的计算 observable。

    因此,您可能希望在应用绑定之前将元素附加到文档中。然后,您可以在测试完成后将其移除。

    【讨论】: