业力测试:TypeError:试图分配给只读属性

Posted

技术标签:

【中文标题】业力测试:TypeError:试图分配给只读属性【英文标题】:Karma testing: TypeError: Attempted to assign to readonly property 【发布时间】:2016-10-08 08:41:49 【问题描述】:

当我尝试对我的控制器进行单元测试时,我收到了错误。当我调试测试用例的期望时,我得到了预期的值,但它失败并出现以下错误。我在这里缺少什么或者我是否正在测试控制器变量以错误的方式?

我的规范文件在下面

'use strict';
describe('Information.controller', function () 
beforeEach(angular.mock.module('asp'));
var InformationController, scope;

beforeEach(inject(function($controller, $rootScope) 
    scope = $rootScope.$new();
    InformationController = $controller('InformationController', 
        $scope: scope
    );
));

fit('Should remove the object without info from the  object', function () 
    InformationController.Data = [
        
            "ban": "03745645455",
            "accountNo": "0000drgyt456456565",
            "id": "2c4cc5e8-f360367"
        ,
        
            "ban": "27346fgh9080",
            "accountNo": "000456456ytr655680",
            "id": "2c4cc8ae-50bbf360367"
        
    ];
    InformationController.banList = InformationController.Data.map((value, index) => (value && value.ban ? 'id': index, 'text': value.ban : null))
    .filter(value => value);
    expect(InformationController.banList.length).toBe(3);
);
);

【问题讨论】:

【参考方案1】:

readonly 错误是由 scope.page(in my InformationController) 未定义引起的,然后代码试图将属性分配给未定义。因此修改 beforeEach 块如下

beforeEach(inject(function ($controller, $rootScope) 
        scope = $rootScope.$new();
        scope.page3 = ;
        InformationController = $controller('InformationController', 
            $scope: scope
        );
    ));

这解决了问题。

【讨论】:

以上是关于业力测试:TypeError:试图分配给只读属性的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:无法分配给只读属性 - Karma

套接字 IO 客户端 + React Typescript + 上下文 API 导致 TypeError:无法分配给对象“#<Object>”的只读属性“exports”

来自 apollo-boost 的 ApolloClient 试图分配给只读属性

排序对象数组时出错无法分配给对象'[object Array]'的只读属性'2'

无法分配给对象的只读属性

业力测试 Angular - this.alertService.danger 不是函数