问题标签 [ngmock]

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.

0 投票
0 回答
288 浏览

javascript - AngularJS Jasmine 单元测试:错误:[$injector:unpr] 未知提供者:pServiceProvider <- pService

我正在对一个简单的角度代码进行测试,但出现以下错误。

错误:[$injector:unpr] 未知提供者:pServiceProvider <- pService

以下是详细信息:

产品模块.JS

ProdController.js

产品服务.js

测试.JS

当我将服务代码放入 ProdController.js 时,它可以正常工作,但是当我将代码分离到每个 js 文件中时,测试就会中断。我可以知道我错过了什么吗?

0 投票
1 回答
429 浏览

angularjs - $log 中的 Angular ngMocks 错误

我遇到了问题,ngMocks并且$log在那里被嘲笑的提供者。

任何时候$log在我的代码中使用,测试都会失败,因为模拟$log失败(第 295 行):

as$log.info.logs看起来是未定义的,而不是数组。

我注意到ngMock以这种方式更改日志功能:

让我的测试通过。

知道为什么会发生这种情况吗?我认为这不是一个错误,ngMock因为我没有找到任何参考。

0 投票
0 回答
28 浏览

angularjs - 由于 ngMock,装饰的 $log 在单元测试中失败

在 out 项目中,我们装饰了 $log 服务,它公开了一个方法 .prefix()。我们像使用它一样$log.prefix('Some Prefix text here')

这在我们使用 $log 登录的每个模块中都可以正常工作,但在单元测试中却不行:

$log.prefix 不是函数

它必须这样做 $log 由 ngMock 模块更改。当我们在每个模块中使用 $log.prefix 时,我不想重写这些模块的每个单元测试。

问题:有没有办法装饰ngMock的$log方法?

0 投票
1 回答
768 浏览

angularjs - 如何使用 $controller 装饰器模拟单向绑定参数?

我正在为一个指令的控制器编写测试,它的启动逻辑需要定义一些单向绑定参数。我在将单向绑定参数传递给模拟控制器时遇到了困难。文本绑定参数可以毫无困难地传递。

注意:在下面的代码中,我跳过了模块注入和代码的其他不相关部分

以下是具有两种类型参数的指令定义:

这是控制器:

至于测试:

Whiletext正确传递给 $controller,oneWay未定义且测试失败。我还尝试向它传递一个返回对象的函数,但无济于事。该文档不涵盖单向绑定参数。您知道如何在不测试指令并将参数作为标记传递的情况下执行此操作吗?一般来说,我喜欢让我的测试专注于测试指令和它们的控制器。

0 投票
1 回答
489 浏览

angularjs - 使用 webpack 进行 Angular 1.5 组件单元测试

我正在尝试使用带有一些绑定的控制器测试组件:

在我的单元测试文件中,我不想加载完整的应用程序,只是我需要的东西。所以我想模拟一个模块,或者只是用模拟创建一个名为 something 的新模块,将组件添加到该模块,然后加载该模块:

创建模块 mock-module 很好,但加载它失败,显然在 not-so-much-loaded-module 中注入东西失败,以及创建一个我可以开始测试的控制器。如果能够单独测试组件,与运行它的应用程序分开,那就太好了。

仅对 AppSpecificController 类使用 new 运算符不起作用,因为那时您从组件接收的绑定不存在:

0 投票
1 回答
35 浏览

javascript - Angular App 运行良好,但 ngMock 不能正确加载模块

当我部署它并在浏览器中运行它时,我的应用程序运行良好

我可以成功访问我所有的控制器/服务。它们通过子模块链接在一起。

我使用子模块来更好地为 ui-router 组织状态/路由。(以前我们在 app dot js 文件中有我们所有的状态。大约有 50 个。现在它们被组织成更小的模块)。

app.js [模块文件]

components.js [模块文件,包含状态/路由]

user.js [模块文件,包含状态/路由]

user-controller.js // 加载正常;是一个控制器。

client-controller.js // 不加载!找不到“phpApp.components”模块...

我的 index.html 文件按以下顺序加载脚本:

我不明白。我的客户端控制器在我的用户控制器之后加载......但它无法找到正确的模块?

我得到错误:

在这一点上,我感到非常困惑和沮丧。我不确定我哪里出错了。

0 投票
0 回答
62 浏览

javascript - 使用返回承诺的模拟工厂的角度测试控制器

我正在尝试测试一个 Angular 控制器并模拟一个工厂,以便我可以在同一个测试中使用它。我对 Angular 测试相当陌生,并且一直无法弄清楚如何做到这一点。我的工厂不使用 $http 而不是 $q 服务,返回一个承诺。鉴于工厂的函数调用返回一个承诺,我也不确定在我的模拟工厂中放置什么。

我的最终目标是从我的控制器调用我的模拟工厂,然后检查我的控制器中的两个数组以获取应该填充它们的数据。如果您对重组我的可测试性测试有任何建议,请务必提供反馈。

角度控制器

角工厂

测试文件

0 投票
1 回答
86 浏览

javascript - AngularJS 意外请求 ngmock

GET /#/car/view/0在 0 是:carId.

它适用于 ngMock 后端的基本 angular crud 应用程序。$httpBackend.whenGET(carUrl)工作并返回所有汽车的列表。addCar()也有效。

我无法弄清楚我在获取详细视图时做错了什么

我需要一些帮助来获取正确的 url 并通过 id 获取详细视图。显然,下面的代码有效,因为 url 是静态的,但我找不到正确的方法来获取带有 ID 变量的 url。

编码:

应用程序.js

路由:

app.run: 这是我的模拟后端定义的地方

汽车服务.js

carView.js

汽车清单.html

0 投票
1 回答
64 浏览

angularjs - ngMock 没有注入工厂

在过去的 24 小时里,我一直被困在这个问题上,在这里看不到我的代码有什么问题。我收到来自 Angular 的注入器错误,无法理解原因。这是我的代码:

我检查了我的 karma.conf.js 文件,并且所有需要的文件都包含在测试中。我有另一个属于同一模块的服务,当我尝试注入它而不是“测试”时,它按预期工作。

对此的任何帮助将不胜感激。

0 投票
1 回答
63 浏览

angularjs - 如何在单元测试中配置 Angular Provider?

我正在尝试为提供者创建测试,但我似乎无法在测试中对其进行配置。这是我的提供程序,我在实例化时使用 url 配置服务:

这是我的测试设置:

我试着做:

但它给了我错误“无法读取未定义的属性'config'”

如何在我的测试中配置我的提供者?