javascript - 单元测试数组推送

标签 javascript unit-testing mvvm knockout.js jasmine

这可能是我遗漏的一件非常明显的事情,但我试图将现有对象从一个数组推送到另一个数组中以进行测试,但我的测试一直失败。

查看模型

this.userDatabases = ko.observableArray();
this.databases = _.range(5).map(function (i) {
    return {
        name: 'DB ' + (i + 1),
        chosenRoles: ko.observableArray(),
        chosenModules: ko.observableArray()
    };
});

单元测试

describe('modifies a new user by', function () {

    it('adding a database', function () {
        vm = new pfp.insight.controllers.settingsController();

        vm.userDatabases.push(vm.databases[0]);

        expect(vm.userDatabases.length).toEqual(1);
    });
});

此测试显示“预期 0 等于 1”,我不确定为什么 userDatabases 没有从数据库数组接收第一个对象。

最佳答案

您需要打开可观察数组(通过在其后面放置括号)来测试它的长度,如下所示

    expect(vm.userDatabases().length).toEqual(1);

关于javascript - 单元测试数组推送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28050561/

相关文章:

javascript - 对于每个不按正确顺序发射的情况

javascript - 在 react/next 中滚动溢出组件

javascript - 使用 JavaScript 在 Firefox 中保存 HTML 页面

python - 使用绿色显示 python 中的代码覆盖率

javascript - 在 phantomJS 中播放视频时出错

wpf - WPF TreeView构造-对每个项目使用 View / View 模型是否很好?

javascript - 将 JS 对象(键和值)展平为单个深度数组的最佳方法

java - 在 JUnit 中使用 @RunWith 有解决方法吗?

wpf - 通过 MVVM 绑定(bind) Telerik RadRichTextBox

.net - MVVM 场景中的报表查看器 (rdcl)