单元测试数组推送

Unit Testing Array Push

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

查看模型

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);
    });
});

这个测试说 "Expected 0 to equal 1" 我不确定为什么 userDatabases 没有从数据库数组中接收到第一个对象。

您需要打开可观察数组(通过在它后面加上方括号)来测试它的长度,就像这样

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