angularjs - 如何使用 karma 和 jasmine 测试 screen.width 条件

标签 angularjs testing jasmine width screen

一段时间以来,我一直在努力在我的 Controller 中测试一个简单的 if 语句。

if (screen.width <= 768) {
                $location.hash('map');
                $anchorScroll();
            }

我找到了一种生成不同尺寸浏览器的方法,但它不起作用,screen.width 始终保持不变。有没有办法覆盖那部分代码?

最佳答案

我使用的是 Angular 8。我使用 karma-viewport 插件来模拟屏幕尺寸,它对我来说效果很好。

包可在 https://www.npmjs.com/package/karma-viewport 获得.

在 karma.conf.js 中,我必须将视口(viewport)添加到框架并在插件中要求包。

我的 karma.conf.js:

frameworks: ['jasmine', '@angular-devkit/build-angular', 'viewport'],
    plugins: [
      require('karma-jasmine'),
      require('karma-chrome-launcher'),
      require('karma-junit-reporter'),
      require('karma-coverage-istanbul-reporter'),
      require('@angular-devkit/build-angular/plugins/karma'),
      require('karma-viewport')
    ],

在我的 .spec.ts 文件中,我添加了视口(viewport)变量声明:

declare const viewport: any;

在“it”函数中更改大小,调用我的方法根据屏幕大小更改变量并检查结果。在我的例子中,当屏幕尺寸小于 700px 时,组件的属性宽度应为 240:

it('test xyz', () => {
    viewport.set(320, 240);
    component.changeHeightByScreenSize();
    expect(component.width).toEqual(240);
  });

关于angularjs - 如何使用 karma 和 jasmine 测试 screen.width 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44128543/

相关文章:

node.js - 无法将文件从 Angularjs 上传到 Expressjs

json - 验证通过 AngularJS 发送到 Symfony2 REST API 的对象/表单

python - 如何使用 nosetests 测试函数在函数内被调用

ruby-on-rails - Rail3 rake 测试任务不运行测试

.net - 为 Windows Forms .NET 寻找一些好的 GUI 测试框架/GUI 自动化测试工具

angular - 无法通过单元测试更改组件的属性

javascript - 如何从函数返回不同的 promise ?

node.js - Jasmine 和 Protractor 没有输出文件

javascript - Jasmine `expect` 在 superagent `end` 中永远不会出错

javascript - AngularJS根据另一个选择过滤掉选择选项