在淘汰赛中,我想使用jasmine对依赖于另一个observable的计算observable的值进行单元测试。
然而,它不起作用,因为当我改变另一个可观察量时,计算的observable的值不会更新。
这是我的(简化)视图模型:
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");
});
});
当我运行时,茉莉花失败了:
Expected 'chad' to be 'joe'.
关于我如何实现这一点的任何想法?
由于
答案 0 :(得分:1)
您不应该重新创建可观察的,只是设置值:
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");
});
});
你的计算范围的原始observable(在构造函数中分配了“chad”)并使用它。
答案 1 :(得分:0)
对于使用QUnit的相同解决方案解决方案可能有用:
test(" Test view_model.name ", function () {
var view_model = new MarkersViewModel();
view_model.name("joe");
equal(view_model.computedName(), "joe");
});
https://github.com/thedom85/Javascript_Knockout_QUnit_Example