问题标签 [angular-mock]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 使用 Angular mock 加载 JSON 文件以进行 Backendless 开发
我在单独的 .js 文件中为前端后端环境编写了这个小代码。myfile.json
每当有 ajax 调用时,我都需要获取/somelink
。
但是这段代码不起作用并给了我错误:
有人可以帮我解决这个问题吗?
请注意,我不想直接调用 $http 在我的代码中获取 .json 文件,因为这会破坏生产代码。这样做的目的是单独保留此代码以进行后端开发。
谢谢。
更新 1:
我补充说:
现在,除了以前的相同错误之外,我还有另一个错误:Uncaught Error: No pending request to flush !
更新 2:
玩了一圈之后,我发现了一个小技巧。我把它放在.run()
所有其他 $httpBackend 模拟之前。此外,此.js
文件必须放在所有控制器/服务/指令之前和 app.js 引导程序之后。
然后这个:
关键是async: false
这样可以确保将 JSON 加载到 variabledata
中。所有这些都必须在其他对象触发并调用 ajax 事件之前发生。这仅适用于前端后端开发。生产时,当然会删除这个 .js 文件。我不太喜欢这个是因为使用async: false
和直接$.ajax()
而不是$http
angularjs - 角度模拟“模块”导致“[对象对象]不是函数”
我正在尝试使用通过 Teaspoon 运行的 Jasmine 在 Angular 中创建一些单元测试。测试正在运行,但是我有一个简单的测试只是为了测试失败的控制器的存在。我有以下测试设置。
require 语句由处理我的依赖项的 Browserify 处理,但我也可以连接到我用于规范助手的 sprockets。
在需要的应用程序中,我有
当我运行这个测试时,我得到了以下错误
我花了很长时间试图弄清楚这一点,但我不知道发生了什么。任何帮助表示赞赏。
angularjs - AngularJS,如何提取像 ngMock 这样的模拟依赖注入
我们有一个分析服务,它依赖注入到我们的大多数控制器中,以帮助我们跟踪用户所做的操作。
与其在每次创建测试套件时都设置此服务的模拟版本,不如采用 ngMock 方法并抽象模拟。最好的方法是什么?
angularjs - 在 Jasmine 测试中模拟 Angulars ng-init 函数
当我在角度测试中实例化控制器时,我想将此函数注入到 ng-init 指令中,在 html 中我会这样设置它:
在我的测试中,我可以编写一个这样的函数,它将正确的东西粘贴在范围内,但我认为它很混乱。我也担心当前在 html 中硬连线的功能在我的中途测试中搞砸了
javascript - 如何从 Angular 的 $httpBackend 返回文件内容?
我正在尝试以角度设置 e2e 测试套件,并且需要使用 $httpBackend 返回预设响应。如果我可以只返回一个文件内容,那就太好了,例如
我尝试使用 $http,类似于
但它没有用,猜测 angular 不支持从 $httpBackend 返回承诺?
我可以做到的一种方法是在应用程序加载时引用带有响应的 js 文件,并将文件的内容分配给变量,但是能够按需加载数据会更好。
angularjs - 在简单的 Jasmine 测试中注入 $log 服务
是的,我对 Angular 和 Jasmine 完全陌生,我不知道如何为我的测试注入模拟 $log。这是测试:
这在注入行上失败并出现错误:
我错过了什么?
angularjs - 如何在 AngularJS 中自动加载模块而不将其指定为依赖项
如果您在 index.html 中包含 angular-mocks.js,ngMock 会自动包含自身。
什么是强制 Angular 在测试模式下加载模块的最简单方法,只需包含一个文件而不必编辑任何模块依赖项。
javascript - 使用 angular-mocks 匹配所有 GET url 以实现后端
我现在正在编写一个没有后端 ajax 的前端。我angular-mocks
用来模拟这样的 API 调用:
但是,如果 ajax 通过params: {id:12345}
,它将附加到 url 为'/somelink?id=12345'
. 这不会被when('GET', '/somelink')
有没有办法使用 RegEx 或一些技巧来解决这个问题?只是为了不管里面是什么params
,respond()
仍然被调用?
谢谢。
更新 1:
我不能使用.whenGET
,因为我的后端系统也POST
有PUT
。所以我需要保持通用。这两个参数.when('GET', '/somelink')
实际上是我的代码中的变量。
由于'/somelink'
is a variable in another JSON
,因此在 JSON 中使用 RegEx/\/somelink/
似乎不起作用。至少这是我现在看到的。
javascript - AngularJS 初始化后端测试
我有 AngularJS + RequireJS 应用程序。我的任务是为 UI 开发目的创建一个后端版本。因此,模拟了部分/所有 HTTP 请求的版本。所需的用户流是:
- 用户去 /debug 初始化一个后端版本。
- 用户可以在模拟 HTTP 请求的情况下使用该应用程序。
我正在尝试使用 ngMockE2E.$httpBackend。但我找不到任何关于如何将其注入已经引导的应用程序的信息。按照大多数谷歌搜索的示例,我正在尝试创建一个新模块并引导该模块:
但这给了我“错误:ng:btstrpd App 已经用这个元素引导”。关于如何开发此任务的任何想法?
angularjs - 如何使 $httpBackend 对 URL 查询参数的顺序不敏感?
我正在使用 Angular.js$httpBackend
来测试一些包装$http
调用的服务(这是在 ngMock 中,而不是在ngMockE2E 中)。
似乎对 URL 查询参数expect
的when
顺序很敏感。例如,如果我这样做$httpBackend.when('POST','/apiCall?X=1&Y=2').respond(/* ... */)
或,如果我在 URL 中有Y=2&X=1而不是X=1&Y=2$httpBackend.expectPOST('/apiCall?X=1&Y=2')
,我会得到 URL 不匹配。
我想以这样一种方式编写我的测试,即被测试的服务可以自由地更改 URL 查询字符串参数的顺序而不会破坏测试。我无法在 $httpBackend 文档中找到任何解决此问题的方法。这样做的正确方法是什么?