【问题标题】:Make module load JSON Karma AngularJS使模块加载 JSON Karma AngularJS
【发布时间】:2019-04-23 02:22:55
【问题描述】:

我有一个用 AngularJS 构建的项目,我想使用 Jasmine 和 Karma 添加单元测试。每次我尝试运行测试时,我都会得到“无法实例化模块”,因为在源代码中我使用 XMLHttpRequest 加载了一个本地 json 文件,但在测试中,相同的函数以 404 响应。json 是一个配置文件,所以如果不是加载所有应用程序无法正确加载。我尝试使用 $httpBackend 捕获 GET 请求并使用自定义 json 进行回答,但似乎 $httpBackend 无法捕获请求。

编辑

我认为问题与this相同

【问题讨论】:

    标签: angularjs json karma-jasmine karma-runner


    【解决方案1】:

    您可以使用 require() 函数从 JSON 文件中提取模拟数据:

    const data: any = require('../../assets/sample-data.json');
    

    现在您应该可以在测试中使用data 对象了。 或者您可以将您的 json 数据转换为 Angular 服务(实际上可以使用 Angular 常量)。然后我的外部文件将很容易在测试中获取,例如:

    var setupData = $injector.get('SampleData');
    $httpBackend.whenGET('/my-service-url').respond(SampleData);
    $httpBackend.flush();
    

    【讨论】:

    • 感谢您的回复。我尝试了一些东西,包括你的东西,但问题似乎是在注入模块时,这发生在你的代码执行之前。在创建测试环境时,似乎 jasmine 或 karma 无法包含该文件。我试图在 karma.conf.js 中添加路径但没有成功
    猜你喜欢
    • 2016-01-02
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 2015-07-15
    • 2015-02-09
    • 2012-10-10
    相关资源
    最近更新 更多