使用 Karma + Jasmine 测试 AngularJS 指令的 CSS 问题

2024-04-19

我正在使用 Karma + Jasmine 来测试我的 AngularJS 指令,我编写了 300 多个测试,我非常高兴......直到我发现一个问题将我带到这里,因为我陷入了困境:一些测试失败了,因为它们需要一个CSS 应用于某些元素(我的指令中的一段代码根据此样式进行大小计算),尽管我添加了包含 CSS 实现的文件,但在测试过程中该文件似乎被忽略。 在我的 karma 配置中,我以这种方式添加了 css 文件:

files: [
     // ..
     'styles/foo.css',
     // ..
],

上面的设置会在中生成一个链接标签body而不是head,所以我尝试使用js“手动”注入CSS:

angular.element(document).find('head').prepend(
        '<style type="text/css">@charset "UTF-8";' +
        '/* THE STYLE I NEED FOR MY TESTS HERE */' +
        '</style>'
);

但这种方法似乎都不起作用(我测试过并且样式标签被正确注入)。 我最终尝试在使用 Angular 编译的 html 中添加一个样式块$compile:

var element = ng.element('<div>' +
'<style type="text/css">@charset "UTF-8";' +
            '/* THE STYLE I NEED FOR MY TESTS HERE */' +
            '</style>' +
'<my-directive></my-directive>' +
+ '</div>');
$compile(element)(scope);

...但仍然不幸运...我还尝试将测试运行程序从PhantomJS to Chrome,但问题是相同的:样式以某种方式被忽略(它们被注入但没有应用于元素,实际上使用jQuery(targetElement).css('width')它返回 0)...

所以,我的大问题:我应该如何在业力测试中导入并成功应用样式表??? :(


好吧,这个问题非常简单和愚蠢......我想知道为什么我花了这么多时间来实现它:P 所以...... Karma 通过在配置文件中指定它们来完美地注入 CSS,就像我作为第一种方法所做的那样(不需要其他插件或黑魔法),但是......CSS 样式只有在添加到 DOM 后才会应用于元素!这不是与业力、角度、茉莉花或其他什么相关的问题......这就是浏览器引擎的工作原理!浏览器解析 CSS 定义并根据其渲染页面中的元素,但在角度测试中我写道:

var element = angular.element('<my-directive></my-directive>');
$compile(element)(scope);

我正在处理内存中的 DOM 节点,除了我的 JavaScript 代码之外,其他人都不知道这些节点!浏览器引擎应该如何将 CSS 应用到位于 js 变量中的内存节点?显然它不能...它只能遍历页面中的节点树,所以...“修复”非常简单:我必须将元素添加到 DOM:

angular.element(document).find('body').append(element);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Karma + Jasmine 测试 AngularJS 指令的 CSS 问题 的相关文章

随机推荐

  • Tensorflow 版本与 Tensorboard 版本

    我想问一下tensorflow版本是否可以与tensorboard版本不同 我有个问题 404 problem 有人建议安装一个新版本的张量板 https github com tensorflow tensorboard issues 9
  • 通过 Android 应用程序安全地使用 Google Plus 登录 Web 应用程序

    我正在开发一个 Android 应用程序 我希望用户使用 Google 登录来登录我的应用程序 目前 我在 PHP 登录脚本中传递从 Google 获得的用户名 该脚本使用用户 ID 加载新会话 目前 该网站非常不安全 任何知道其他用户用户
  • 如何在jstl中使用三元运算符编写if else条件?

    我想在 JSTL 中使用三元写一个 if else 条件 我是用jsp做的 我的代码使用jsp 我怎样才能使用jstl实现它 你的意思是表达语言 https stackoverflow com tags el info 简称 EL 因为这是
  • Maven 程序集插件未使用 FinalName 进行 Attach=true 安装?

    我配置了以下程序集
  • 在 bash 脚本中期望

    我正在尝试将 Expect 脚本实现到 bash 脚本中 请耐心等待 因为我对 bash expect 还很陌生 这是按预期工作的期望脚本 log user 0 file delete foo txt set fh open foo txt
  • 什么是列表与数组列表? [复制]

    这个问题在这里已经有答案了 这两个对象之间的根本区别是什么 是不是效率更高 还有更多方法吗 List是接口 而ArrayList是类 See 数组列表 https docs oracle com javase 8 docs api java
  • Jquery 无法在加载的内容中工作

    它似乎有一个简单的解决方案 但我还无法弄清楚 有一千个类似的主题 但没有一个对我有用 所以我以一种非常简单的方式问这个问题 我有一个按钮 假设按钮 A 我想在单击此按钮时加载外部页面的一部分 加载该部分后 有另一个按钮 B 在加载的内容内
  • Vim 滚动时保持光标位置

    有没有办法在滚动时使 Vim gVim 中的 cusror 位置保持在屏幕外 与许多 Windows 编辑器类似 我了解标记 并且确实使用它们 我也知道 标记 最后编辑位置 但正在寻找其他想法 我问这个问题是因为有时我想将光标保留在某个位置
  • Symfony2:--重新安装问题

    我一直在尝试为 Symfony2 安装 Buzz 我将其添加到 deps 文件中 并尝试更新我的供应商 php bin vendors update 该命令只是告诉我我已经安装了标准版本 并且我应该尝试使用 php bin vendors
  • 使用三个 JS 和 React JS 加载 GLTF 模型

    我使用 React JS 加载从 sketchfab 下载的 GLTF 文件时遇到问题 当我尝试在不使用React 使用常规index html和index js 的情况下执行此操作时 它可以工作 但是当我将代码带入React应用程序时 它
  • 使用 Ember.js 为每个模型添加额外的 url 参数

    我有两个模型 App Providers DS Model extend name DS attr string description DS attr string logo DS attr string products DS hasM
  • Get-AzureWebsite:找不到请求的值“动态”

    我们有一组使用 Azure powershell cmdlet 的自定义 powershell 模块 它们已经正常工作一年多了 我刚刚设置了一台新计算机 每当我尝试运行 Get AzureWebsite 时 我都会收到以下错误 PS C W
  • 使用 Hadoop MapReduce 的计算语言学项目构想

    我需要做一个关于计算语言学课程的项目 是否有任何有趣的 语言 问题 其数据密集程度足以使用 Hadoop MapReduce 来解决 解决方案或算法应尝试分析并提供 语言 领域的一些见解 但是它应该适用于大型数据集 以便我可以使用 hado
  • 如何在 Xamarin 上仅查看我的解决方案的调试输出?

    我正在使用 XF pcl 制作应用程序 Mac 上的 Xamarin 工作室 我正在使用 Debug WriteLine 进行调试 我想避免看到其他 nuget 的控制台日志 我可以看到控制台以蓝色显示我的日志 如何只看到蓝色日志 Than
  • 无法在“节点”上执行“removeChild”

    我在用着http alexgorbatchev com SyntaxHighlighter http alexgorbatchev com SyntaxHighlighter 突出显示我网站上的代码 但有时在我的日志中我会收到如下 Java
  • 如何获取相机相对于其方向的 SCNVector3 位置 ARKit Swift

    我试图在相机前面附加一个对象 但问题是它始终与初始相机方向相关 我如何调整 获取SCNVector3即使相机的方向是向上还是向下 将物体放在前面的位置 我现在就是这样做的 let ballShape SCNSphere radius 0 0
  • 如何使用 Powershell 将 XML 正确导出到文件

    使用以下命令导入任何有效的 XML 文件作为源 XML Var Get Content Path PathToAnyValidXML我无法正确导出其内容 Using Set Content SomePath Var 文件以 System X
  • 如何使 JButton 在同一目录中运行可执行文件?

    好的 我正在尝试让我的 JButton 在不同的目录中运行可执行文件 这是我以前编写的控制台应用程序 我希望此按钮运行可执行文件 我对 Java 编程语言相当陌生 但这是我的代码 import java util import javax
  • ASP.NET MVC 4 Visual Studio 2010 项目模板不存在

    我已经下载并安装了在 VS2010 中使用 MVC 4 的所有先决条件 VS2010 SP1 更新 VS2010 的 ASP NET MVC 4 VS2010 的 SSDT 和 LocalDB 当我去VS2010中创建一个新网站时 应该有一
  • 使用 Karma + Jasmine 测试 AngularJS 指令的 CSS 问题

    我正在使用 Karma Jasmine 来测试我的 AngularJS 指令 我编写了 300 多个测试 我非常高兴 直到我发现一个问题将我带到这里 因为我陷入了困境 一些测试失败了 因为它们需要一个CSS 应用于某些元素 我的指令中的一段