问题标签 [jasmine-matchers]

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 投票
4 回答
9219 浏览

jasmine - 有没有办法在整个环境中添加 Jasmine 匹配器

有很多文档展示了如何向 Jasmine 规范添加匹配器(例如,这里)。

有没有人找到将匹配器添加到整个环境的方法?我想创建一组有用的匹配器,以供任何和所有测试调用,而无需在我的规范中使用 copypasta。

目前正在对源代码进行逆向工程,但如果存在的话,更喜欢一种经过验证的真实方法。

0 投票
3 回答
5739 浏览

jquery - 茉莉花文本验证:如何规范化文本?

我有一个包含不同 HTML 元素中的文本的页面,我想要一种快速验证文本的方法。

使用 jasmine 和 jasmine-query 加载 HTML 和测试 DOM。

例如,我想验证此 HTML 中的文本

假设我想验证表中的每一行都包含正确的文本。茉莉花测试文件:

我会得到这个失败:

另一个实验是使用 jQuery.text() 提取,然后我仍然有一个错误,因为所有的空格:

给出了这个失败:

Capybara (for ruby​​) 有一种方法来规范化文本,这样我总能看到我的 HTML 的合理文本表示。我将如何以简单的方式规范空白,以便我可以进行这样的验证?

(我不希望得到像“你不应该跨 html 元素进行测试”这样的答案......因为这是问题的前提。实际上我喜欢对多个元素进行断言:它可读、简短,并且可以快速查看内容正在工作。当我从外向内测试时也非常必要)

0 投票
1 回答
4502 浏览

javascript - 用 Jasmine 检查两个边界(在匹配器之间)

在 Jasmine 中,有toBeGreaterThantoBeLessThan匹配器。

如果我想检查特定范围内的整数值怎么办?有没有类似toBeInBetweenmatcher的东西?

目前,我可以通过两个单独的expect调用来解决它:

0 投票
2 回答
5218 浏览

javascript - 预期失败:“预期 [ ] 为空数组。”

这是失败的测试:

页面对象MyPage在哪里:

errors应该是一组可见的错误文本在页面上找到

这是我们得到的错误:

仅供参考,toBeEmptyArray()matcher 来自jasmine-matchers第三方。


我试图打印出scope.page.errors这种方式的价值:

并打印为[]. Array.isArray(errors)返回true

从我所见,scope.page.errors是一个空数组,但期望失败。我错过了什么?

0 投票
5 回答
148826 浏览

javascript - toBe(true) vs toBeTruthy() vs toBeTrue()

expect(something).toBe(true)expect(something).toBeTruthy()和有什么区别expect(something).toBeTrue()

请注意,这toBeTrue()是在其他有用且方便的匹配器(如or )中引入的自定义匹配器。jasmine-matcherstoHaveMethod()toBeArrayOfStrings()


这个问题是通用的,但是,作为一个真实的例子,我正在测试一个元素是否显示在protractor. 在这种情况下我应该使用哪个匹配器?

0 投票
3 回答
6273 浏览

typescript - 使用 Typescript 创建自定义茉莉花匹配器

我在 angular2 项目中使用 jasmine,并且在编写自定义匹配器进行测试时遇到了一些麻烦。我希望能够比较两个相对复杂的对象。我发现这篇文章声称可以解决这个问题,但它只会导致打字稿错误,指出它无法识别 jasmineMatchers对象上的新方法。相关代码是这样的:

另一篇文章给出了一个类似但略有不同的解决方案,它给出了相同的错误。

我试过这个

并得到这个错误:

类型“jasmine.Matchers”不可分配给类型“jasmine.Matchers”。存在具有此名称的两种不同类型,但它们不相关。

这似乎表明该declare namespace jasmine语句正在创建一个新的jasmine名称空间,而不是扩展现有的名称空间。

那么我怎样才能创建自己的匹配器,打字稿会满意呢?

0 投票
1 回答
600 浏览

regex - toMatch 不适用于量角器中的页面对象

我对 Jasmine 很陌生,我正在使用 Protractor 和页面对象。这是显示的页面对象,包含规范调用的函数:

问题是 getText 之后的 toMatch 与正则表达式不匹配,根据我能找到的所有正则表达式引用,它应该。我安装了 jasmine-matchers,所以我不确定为什么会这样。这是我使用此函数运行规范时收到的堆栈:

我错过了什么?

0 投票
1 回答
2519 浏览

typescript - Jasmine 自定义匹配器类型定义

我正在尝试将 typescript 定义添加到 jasmine matcher library中。

我能够为泛型类型添加匹配器,T但现在我只想将匹配器添加到 DOM 元素。

深入研究 jasmine 类型定义代码,我发现了一种类似的方法ArrayLike(参见这里expect重载和这里ArrayLikeMatchers)。

所以我创建了一个类似的。

但是,不工作:(

给定以下代码:

类型检查器给了我错误:

[js]“匹配器”类型上不存在属性“toBeChecked”。


唯一的解决方案似乎是在核心 jasmine 库中的泛型之前(在此处重载之后)添加expect重载。expectArrayLike

但是......这是不可行的:)

关于如何正确实施有效解决方案的任何提示?

0 投票
1 回答
141 浏览

javascript - 如何为 jasmine 编写自定义匹配器以查找对象属性是否位于对象属性值范围内?

我正在尝试为 Jasmine 实现一个自定义匹配器,我想检查给定的对象属性值是否在其他两个对象属性值的范围内。

这是我到目前为止得到的:

在这里,我假设,实际有两个属性xy. 并且预期是一个由两个对象组成的数组,每个对象也有两个属性xy

现在,我相信对于上面给出的简单示例,这种情况是可行的。但是当我试图将它实现为泛型时,我如何找到该对象具有哪些属性?我的方法正确吗?谁能给我一些想法,我该如何实施这种方法。

谢谢你。

0 投票
1 回答
178 浏览

javascript - 如何在自定义匹配器中恢复 Jasmine 间谍名称

我将在 Jasmine 2.0 中创建一个自定义匹配器,以根据一些附加条件验证间谍。在极大的简化中,例如:

我的问题是,如何恢复作为工厂方法的第一个参数传递的间谍名称:createSpy(name, originalFn)

我在Jasmine 文档 v2.6中也找不到任何在线教程。

console.log(spy)返回function(...) {...}