Unit testing 淘汰-单元测试计算的可观测值

Unit testing 淘汰-单元测试计算的可观测值,unit-testing,knockout.js,jasmine,Unit Testing,Knockout.js,Jasmine,在knockout中,我想使用jasmine对依赖于另一个可观测值的计算可观测值进行单元测试 但是,它不起作用,因为当我更改另一个可观察对象时,计算的可观察对象的值不会更新 以下是我的(简化)视图模型: function MarkersViewModel() { var self = this; self.name = ko.observable("chad"); self.computedName = ko.computed(function() {

在knockout中,我想使用jasmine对依赖于另一个可观测值的计算可观测值进行单元测试

但是,它不起作用,因为当我更改另一个可观察对象时,计算的可观察对象的值不会更新

以下是我的(简化)视图模型:

function MarkersViewModel() {
    var self = this;   
    self.name = ko.observable("chad");
    self.computedName = ko.computed(function() {
        return self.name();
});
这是我的茉莉花规格:

describe("string", function() {
    var view_model = new MarkersViewModel();
    view_model.name = ko.observable("joe");

    it("returns the whole array when there is no filter", function() {
        expect(view_model.computedName()).toBe("joe");
    });
});
当我运行这个时,jasmine失败了:

Expected 'chad' to be 'joe'.
你知道我该怎么做吗


谢谢

您不应该重新创建可观察的,只需设置值:

describe("string", function() {
    var view_model = new MarkersViewModel();
    view_model.name("joe"); // <- here

    it("returns the whole array when there is no filter", function() {
        expect(view_model.computedName()).toBe("joe");
    });
});
描述(“字符串”,函数(){
var view_model=新MarkersViewModel();

view_model.name(“joe”);//您不应重新创建可观察的,只需设置值:

describe("string", function() {
    var view_model = new MarkersViewModel();
    view_model.name("joe"); // <- here

    it("returns the whole array when there is no filter", function() {
        expect(view_model.computedName()).toBe("joe");
    });
});
描述(“字符串”,函数(){
var view_model=新MarkersViewModel();

view_model.name(“joe”);//它可能对使用QUnit的同一解决方案有用:

test(" Test view_model.name ", function () {
    var view_model = new MarkersViewModel();
    view_model.name("joe");

    equal(view_model.computedName(), "joe");

});

对于使用QUnit的相同解决方案可能有用:

test(" Test view_model.name ", function () {
    var view_model = new MarkersViewModel();
    view_model.name("joe");

    equal(view_model.computedName(), "joe");

});

我不理解您在代码下面的评论,但它是有效的。谢谢!我不理解您在代码下面的评论,但它是有效的。谢谢!