问题标签 [jasmine2.0]

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 投票
2 回答
19710 浏览

javascript - Jasmine calls.length 和 callCount 未定义

我正在尝试使用Jasminecalls.length测试我的chrome 扩展,但我无法callCount按预期进行操作。两种情况都返回undefined

我已经包含了代码和规范的示例。如果有帮助,这里是其余代码:https ://github.com/DruRly/kamikaze/tree/closeIdleTab

如何重现:

  • git clone https://github.com/DruRly/kamikaze/tree/closeIdleTab
  • cd kamikaze
  • open SpecRunner.html

规格/kamikazeSpec.js

src/kamikaze.js

0 投票
3 回答
11468 浏览

angularjs - 在 Jasmine 2.0 的异步测试中获取“$digest 已经在进行中”

我知道在摘要周期中调用$digest$apply手动会导致“$digest 已经在进行中”错误,但我不知道为什么我在这里得到它。

这是一个包装服务的单元测试$http,该服务很简单,它只是防止对服务器进行重复调用,同时确保尝试进行调用的代码仍然获得预期的数据。

单元测试也非常简单,它用于$httpBackend预期请求。

done()会随着“$digest already in progress”错误的调用而爆炸。我不知道为什么。我可以通过包装done()像这样的超时来解决这个问题

这意味着done()将在 $digest 完成后排队并运行,但这解决了我想知道的问题

  • 为什么 Angular 首先处于摘要循环中?
  • 为什么调用done()会触发此错误?

我在 Jasmine 1.3 上运行了完全相同的测试,这只是在我升级到 Jasmine 2.0 并重写测试以使用新的 async-syntax 之后发生的。

0 投票
1 回答
1103 浏览

angularjs - Jasmine unit test asynchronous controller method

I'm using Jasmine to unit test an Angular controller which has a method that runs asynchronously. I was able to successfully inject dependencies into the controller but I had to change up my approach to deal with the async because my test would run before the data was loaded. I'm currently trying to spy on the mock dependency and use andCallThrough() but it's causing the error TypeError: undefined is not a function.

Here's my controller...

#xA;

and my test.js...

#xA;

If there is a better approach to this type of testing please let me know, thank you.

0 投票
1 回答
1237 浏览

angularjs - AngularJS 中带有参数的单元测试承诺

我们正在对我们的服务进行单元测试,并面临使用依赖服务参数监视方法的问题。

我正在为 ServiceA 编写单元测试

服务A.js

ServiceB.js(是工厂)

单元测试代码

我正在从 ServiceA 监视 ServiceB 的 getId 方法,如果我将 ServiceB 模拟为函数,我会在下面收到错误

错误:jasmineInterface.spyOn 中不存在 getId() 方法

如果我将 serviceB 模拟为对象,那么我会收到错误消息

而且我不确定在这种情况下测试承诺。

0 投票
2 回答
2975 浏览

javascript - 茉莉花测试代码中未调用回调函数

我正在使用 jasmine 2.0 进行测试,我正在监视 jquery ajax 并返回一个承诺。在 done() 函数方法中 displayContent() 没有被调用,但它上面的控制台消息被显示出来。我哪里错了?

测试.js

应用程序.js

0 投票
1 回答
46 浏览

javascript - 承诺不期待解决或拒绝

为了测试我的一项 AngularJs 服务,我正在编写单元测试。

这是我想出的示例代码:

我只想检查延迟是否已解决或拒绝。我不觉得它真的很令人满意,因为期望并不是很明确。

有没有比这更好的方法来检查 deferred 是否已被拒绝或解决?

0 投票
1 回答
143 浏览

jasmine - 如何测试茉莉花自定义匹配器由于匹配器中的异常而失败

我在下面有一个看起来很奇怪的测试规范。

由于我的自定义匹配器内部的以下检查引发了异常,内部期望失败了。

我认为必须在这里抛出异常,而不仅仅是返回失败的结果,因为如果没有,expect(null).not.toEqualMoment(null) 将返回 true。(如果这对你有意义)。

那么,如果我因异常而使自定义匹配器失败,我该如何测试呢?

0 投票
2 回答
151 浏览

ajax - 我可以在没有将 done 传递给我的实际实现的情况下调用 done 吗?

我正在编写一些 jasmine 测试并使用 mockjax 来模拟​​我的 ajax 调用。我知道 jasmine 需要一些额外的工作才能使其异步工作,但我不喜欢我的解决方案。

我将 ' done' 传递到我的实际实现中,然后在我的 ajax 请求的承诺中调用它。

所有示例似乎都使用 setTimeouts 作为“模拟”,在我看来这并不完全有帮助。

这里有一些代码可以帮助理解:

茉莉花

执行

我对这一切都错了吗?

只是为了重新迭代,我想让 jasmine 知道什么时候 mockjax / ajax 是 .done() 而无需done从 jasmine 传入我的视图模型。

0 投票
1 回答
353 浏览

javascript - Jasmine 异步测试

我正在尝试使用 Jasmine 2 的新done()回调来测试异步设置的值。

我的测试基于 Jasmine 在他们的文档中给出的示例(http://jasmine.github.io/2.0/upgrading.html#section-Asynchronous_Specs):

我得到的结果是“预期为真”,所以我猜测它没有等待在检查标志值之前调用 done() 回调。

有谁知道为什么这个测试失败了?

谢谢!

0 投票
1 回答
418 浏览

jasmine - Jasmine 1.3 到 Jasmine 2.x 备忘单

我正在将一些单元测试从 Jasmine 1.3 迁移到 2.x,我希望有一些简单命令的快速参考备忘单。因为我还没有找到一个,所以我认为发布我到目前为止的内容会有所帮助,其他人可以做出贡献。