如何在 Chutzpah 的无头浏览器中使用 templateUrl 测试指令

2024-01-11

有谁知道如何让像 Chutzpah 的 Visual Studio 测试适配器这样的无头浏览器允许指令访问其 .html 模板文件? Chutzpah 使用 PhantomJS 作为无头浏览器,这似乎限制了我的选择。

我正在使用 Chutzpah Test Adapter 2.5 和 AngularJS 1.2.0-r.2。

我收到错误:

意外请求:GET myApp/directives/template.html

这是由于 Angular 尝试使用 $http 服务访问我的指令模板引起的。

我发现了一些不同的解决方法:

  1. 手动使用 XMLHttpRequest 导入模板。 https://stackoverflow.com/a/18368287/545680
  2. 使用 Grunt 等实用程序将模板内联到指令的 JS 代码中。 https://github.com/vojtajina/ng-directive-testing
  3. $httpBackend.when('GET', 'myApp/directives/template.html').passThrough()- 这只适用于 e2e 测试,不适用于单元测试。
  4. 将模板直接放入测试代码中。 https://stackoverflow.com/a/15231422/545680

这些选择都没有让我特别满意。我希望能够让指令透明地加载其模板,以便我可以将其作为组件进行测试。有什么办法可以让这个场景发挥作用吗?

示例代码:

angular.module('myDirective', []).directive('myDirective', function() {
    return {
        restrict: 'E',
        transclude: true,
        templateUrl: 'myApp/directives/template.html',
        // Some other options, omitted for brevity.
    };
});

模板.html:

<div><div ng-transclude></div></div>

茉莉花测试示例:

describe('myDirective', function() {
    // Assign $scope using inject(), load module etc.
    // Insert workaround for $httpBackend loading my templateUrl here.
    it('should transclude content', function() {
        var element = $compile("<my-directive>Look Mom, I'm in my directive!</my-directive>")($scope);
        $scope.$digest();

        expect(element.text().trim()).toBe("Look Mom, I'm in my directive!");
    });
}

你可以使用 Chutzpah 的“模板”参考

http://matthewmanela.com/blog/chutzpah-2-4-2/ http://matthewmanela.com/blog/chutzpah-2-4-2/

/// <template path="../../MvcAngularJs1_3/ScriptsApp/directives/Templates/testTemplate.html" />
/// <reference path="../../mvcangularjs1_3/scripts/jquery-2.1.1.js" />
/// <reference path="../../mvcangularjs1_3/scripts/angular.js" />
/// <reference path="../../mvcangularjs1_3/scripts/angular-mocks.js" />
...

在参考文献下,Chutzpah 将 HTML 直接包含在测试 HTML 文件中。我为我的模板提供了一个独特的 css 类来查找它们并手动将它们放入模板 AngularJS 模板缓存中。

我的 HTML 模板

<div class="row templateTestTemplate">
   <div class="col-lg-12">
       <h1>Tempalte Test</h1>
   </div>
</div>

该指令

angular.module("testTemplateDirective", [])
    .directive("testTemplate", function() {
        return {
           restrict: 'A',
           replace: true,
           templateUrl: 'ScriptsApp/directives/Templates/testTemplate.html'
       }
});

在我的单元测试中,我使用 jQuery 查找模板并将其添加到模板缓存中。 Angular 首先查看模板缓存,并且不进行 HTTP 调用。

var template = jQuery(".templateTestTemplate")[0].outerHTML;
$templateCache.put("ScriptsApp/directives/Templates/testTemplate.html", template);

到目前为止效果很好,但仅适用于 chutzpah,当您使用 Resharper 运行此测试时,测试将失败,因为 resharper 不会将模板复制到测试 HTML 中。

我还在 Chutzpah GitHub 页面上打开了一个请求,用脚本标签和 ID 包围 HTML,这样您就不需要扩展模板https://github.com/mmanela/chutzpah/issues/330 https://github.com/mmanela/chutzpah/issues/330

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

如何在 Chutzpah 的无头浏览器中使用 templateUrl 测试指令 的相关文章

  • 当共享相同的行和列时,将网格项设置为不重叠

    现在 当两个网格项共享相同的行和列时 它们会相互重叠 div class some grid container div Item 1 div div Item 2 div div 我如何让它们不重叠 当共享相同的行和列时 其行为可能类似于
  • Protractor e2e 测试表头和 , 标签

    我正在使用下表 我想测试每个标签 th td 标签 该标签中的文本以及该文本的计数 HTML 片段 table class table table striped tbody tr th b a Patient Id a b th th b
  • AngularUI 可排序不适用于多个应用程序

    我创建了带有可排序列表的 angularjs 应用程序 我的应用程序可以与其他不同的应用程序一起多次包含在页面中 每个角度应用程序都是独立的用户控制 var myapp angular module myapp ui myapp contr
  • 如何使用 ng-repeat 复选框和 Angularjs 过滤表格

    曾几何时 这是可行的 但不知何故它被破坏了 我希望能够使用 ng repeat 生成复选框 以根据存储的数据获取所需数量的复选框 并使用它们来过滤生成的表 此外 我不希望重复复选框的相同值 我用代码做了一个plnkr div class r
  • 语法错误:意外的静态标记

    我目前正在尝试评估与 React 配合使用的不同测试框架 结果发现 Jest 就在我的列表中 但是 我尝试使用此处概述的静态属性 https github com jeffmo es class fields and static prop
  • ngRepeat 中的函数执行过于频繁

    我有三个tabs里面有不同的htmlng include 这些选项卡使用以下方式显示ng repeat 只有一个 HTML 模板包含函数调用 但它执行了 3 次 每个模板执行一次 ng repeat迭代 这里出了什么问题以及如何解决它 va
  • 如何在点击时添加和删除活动类 - 角度方式

    我正在这样做 div class tiles div 控制器 scope select function item scope selected item scope isActive function item return scope
  • 指令可以从父作用域中删除自身吗

    假设我有以下代码 div div div div 我的自定义指令有一个独立的范围 定义为 app directive customDirective function log return restrict E templateUrl te
  • Jhipster 生成器跳过 --skip-server 处的身份验证代码

    为什么当我们使用 skip server 生成项目时 哟 jhipster skip server 部分身份验证丢失 在 AJS A2 上 是吗 每次我需要粘贴部分代码 Angular 上的 AuthServerProvider 或 Ang
  • 如何在 AngularJS SPA 应用程序中处理浏览器刷新?

    我的 AngularJS 应用程序使用 用户界面路由器 一个index html 文件 所有登录和数据调用都会发送到一个 ASP NET Web 控制器 其 URL 以 api xxx 开头 当用户输入 myapp com 时 服务器ind
  • AngularJS 指令的完整列表?

    我正在学习 AngularJS 是否有所有开箱即用指令的完整列表 这FAQ http docs angularjs org misc faq提及ng repeat ng show and ng class 但我感觉还有更多 奇怪的是我找不到
  • 如何发布数组多维角度js

    我在 angularjs 中有一个数组 示例如下 scope order qty 20 scope order adress Bekasi scope order city Bekasi 这个数组可以用这个代码发布 http method
  • Angularjs 范围之外的服务功能

    我在 angularJS 中创建了一个服务 它使用 btford socket io 模块与服务器交互 由于在服务中我已经实现了一些目前在 Angular 内部使用的 API 但为了以后扩展应用程序 我还需要在 Angular 范围之外提供
  • 卸载/销毁 Angular 延迟加载组件

    我的设置与此处找到的帖子类似http ify io lazy loading in angularjs http ify io lazy loading in angularjs 处理 Angular 中我的应用程序的各种组件的延迟加载 我
  • Typescript:如何在自定义过滤器中使用角度 $filter

    如何在自定义过滤器中使用 Angular filter 如何注入 filter依赖 module Filters export class CustomFilter public static Factory return function
  • Angular 2 中的变更检测

    我正在将角度 1 和角度 2 集成在一起 因此我有角度 1 控制器和服务以及角度 2 组件 这些对于数据检索和存储来说工作得很好 反之亦然 下面是我的 html 页面 h3 Angular 1 service h3 div div
  • 动态img(或视频)标签根本不加载资源,HTTP请求处于“待处理”状态

    我尝试使用以下方法在 Web 应用程序上加载资源时遇到一些问题img or videoHTML 标签 我在我的应用程序中使用 Angular 并动态设置src的参数img标签 使用ng src src 指示 没有那么多图像和资源需要加载 在
  • AngularJS - 从数据中删除 \n

    捕获和格式化从服务器传递的文本内部以显示换行符的最佳方法是什么 小提琴在这里 http jsfiddle net nicktest2222 2vYBn http jsfiddle net nicktest2222 2vYBn scope d
  • ngModel.$parsers 忽略 ng-model 值末尾的空格

    我有这样的指令 directive noWhitespace parse function parse return restrict A require ngModel link function scope element attrs
  • 如何在 angularjs 中修剪()字符串?

    有角度特定的方法吗 如果没有 我应该使用内置的jquery 来做到这一点吗 如果我应该使用内置的jquery 如何在不使用 的情况下访问trim 函数 或者这是必要的 编辑 是的 我知道 str trim 对不起 我需要这个才能在 IE 8

随机推荐

  • Qt 中的测试用例在哪里?

    我已经阅读了 Qtestlib 手册和教程 并逐步了解了开发测试的过程 如果我是对的 Qt 已经开发了一些测试用例来测试其功能 谁能告诉我Qt源代码树中这些代码在哪里 如果我必须修改它们 测试用例 我可以这样做吗 提前致谢 尼夫 单元测试不
  • 使用 Hilt 注入 CoroutineWorker:无法实例化woker

    有人问过同样的问题 但它们对我不起作用 一开始我使用的是最新版本的工作管理器 即 2 7 alpha 3 但我降级了 因为它只兼容 android 12 预览版 sdk 错误仍然存 在 它无法实例化工作人员 因为这些依赖项包含在工作人员的构
  • 将 label 标签包裹在表单项周围还是使用 HTML 中的“for”属性更好?

    我知道您可以同时使用两者 但是使用其中一个比使用另一个更好吗 如果是这样 为什么 for 属性的示例
  • 如何使用 msdeploy 并定位特定站点?

    使用 msdeploy 和 msdeploy axd 处理程序时 任何部署到远程服务器的尝试都会遇到 401 未经授权的错误 并且服务器会记录日志 IISWMSVC AUTHORIZATION SERVER NOT ALLOWED 仅允许
  • Python:导入与函数同名的模块

    背景知识 第一次问SE问题 我对 Python 还很陌生 一般来说编程经验也不是很多 我四处搜寻 但没有找到这个问题的答案 非常感谢您的帮助 我的问题是 如何导入与函数同名的模块 具体来说 我正在使用 Python 符号数学库 sympy
  • 如何将 Pydantic BaseModels 列表转换为 Pandas Dataframe

    我似乎找不到任何内置方法可以简单地将 Pydantic BaseModels 列表转换为 Pandas Dataframe from pydantic import BaseModel import pandas as pd class S
  • futures::executor::block_on 和 block_in_place 之间是否存在性能差异

    我在同步方法内调用异步代码 此方法是特征的一部分 我无法异步实现它 所以我使用block on等待异步调用完成 将从异步代码调用同步方法 所以应用程序是在 tokio main 当某些事件发生 端点命中 时 它会调用同步方法 同步方法将调用
  • 如何向 jquery.datatables 列添加类?

    我为 jquery datatables 创建了一个大表 这对我来说非常有用 但我需要为每个 td 元素相对于其列设置一个类名 例如我想要一列 包括 th 和所有 td 有一个class volume 有这样的问题 我使用此代码来初始化该类
  • Xcode 6 - Main.storyboard 仅显示为源代码,缺少 Interface Builder

    不知何故 我的 Xcode 设置变得混乱 因为它只会将我的 Main storyboard 文件显示为 XML 代码 我被告知可以通过从 打开方式 菜单中选择界面生成器来解决此问题 但菜单下没有任何内容 唯一的 选择 是灰显的 我已经清除了
  • 模拟程序JoinPoint 签名

    我正在尝试模拟 ProceedingJoinPoint 类 但在模拟方法时遇到困难 这是调用模拟类的代码 ProceedingJoinPoint joinPoint Object targetObject joinPoint getTarg
  • 如何在python 3.4中安装xmlrpclib?

    当我尝试安装 xmlrpclib 时 我在 python 版本 3 4 中收到以下错误 下载 解压 xmlrpclib 找不到任何满足 xmlrpclib 要求的下载 一些外部托管的文件被忽略 使用 allow external xmlrp
  • Sonarqube Web 应用程序未启动

    我正在Windows下使用PostgreSQL9 5安装SN5 5 不幸的是 我遇到了错误 Webapp 未启动 下面是完整的堆栈跟踪 我想我首先在 将上下文初始化事件发送到类 org sonar server platform Platf
  • 如何将特定的可变“订单”保存到数据库中

    假设我有一些对象 并且我希望用户能够以他们希望的任何方式对它们重新排序 例如通过拖动它们 所以我会有 Cheese Muffins Milk 然后用户将 牛奶 拖到顶部 进行新订单 Milk Cheese Muffins 是否有最佳实践如何
  • 嵌套 JSON 对象 - 我是否必须使用数组来处理所有事情?

    有没有什么方法可以在 JSON 中嵌套对象 这样我就不必用所有东西制作数组 为了正确解析我的对象 我似乎需要这样的结构 data stuff onetype id 1 name John Doe id 2 name Don Joeh oth
  • djangorest框架更新序列化器中的方法,实例不会立即保存

    要更新的实例有 email protected cdn cgi l email protection 电子邮件要更新或更改为 email protected cdn cgi l email protection UserUpdateSeri
  • 如何获取所有带有特色图片的 WordPress 帖子?

    WordPress 3 中有特色图片功能 如何获取所有带有特色图片的帖子 这是我当前的自定义循环 loop new WP Query array posts per page gt 15 这应该有效 loop new WP Query ar
  • Javascript 事件处理和流程控制

    我正在尝试构建一个根据提供的输入加载的网页 基本上 我在 javascript 中的事件处理方面遇到了一些麻烦 来自 python 如果我想在继续显示下一个对象之前等待特定的键盘输入 我会创建一个while循环并在其中放置一个关键侦听器 P
  • MapKit 显示整个地球

    我正在尝试在 MKMapView 中绘制整个地球仪 通过捏合缩小 我只能缩小到一定程度 我希望能够缩小到这个级别以上 以在地图上显示整个地球 这似乎不是很困难 但我一直找不到任何解决方案 里面的地图MKMapView不会在侧面重复 因此您无
  • 将 CSV 文件的内容加载到数组而不打开文件[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要将 6000 多个 csv 文件整理成一个 csv 文档 目前的VBA流程是 1 打开单独的CSV数据文件 2 根据行数将文件内
  • 如何在 Chutzpah 的无头浏览器中使用 templateUrl 测试指令

    有谁知道如何让像 Chutzpah 的 Visual Studio 测试适配器这样的无头浏览器允许指令访问其 html 模板文件 Chutzpah 使用 PhantomJS 作为无头浏览器 这似乎限制了我的选择 我正在使用 Chutzpah