问题标签 [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.
jasmine - 有没有办法在整个环境中添加 Jasmine 匹配器
有很多文档展示了如何向 Jasmine 规范添加匹配器(例如,这里)。
有没有人找到将匹配器添加到整个环境的方法?我想创建一组有用的匹配器,以供任何和所有测试调用,而无需在我的规范中使用 copypasta。
目前正在对源代码进行逆向工程,但如果存在的话,更喜欢一种经过验证的真实方法。
jquery - 茉莉花文本验证:如何规范化文本?
我有一个包含不同 HTML 元素中的文本的页面,我想要一种快速验证文本的方法。
使用 jasmine 和 jasmine-query 加载 HTML 和测试 DOM。
例如,我想验证此 HTML 中的文本
假设我想验证表中的每一行都包含正确的文本。茉莉花测试文件:
我会得到这个失败:
另一个实验是使用 jQuery.text() 提取,然后我仍然有一个错误,因为所有的空格:
给出了这个失败:
Capybara (for ruby) 有一种方法来规范化文本,这样我总能看到我的 HTML 的合理文本表示。我将如何以简单的方式规范空白,以便我可以进行这样的验证?
(我不希望得到像“你不应该跨 html 元素进行测试”这样的答案......因为这是问题的前提。实际上我喜欢对多个元素进行断言:它可读、简短,并且可以快速查看内容正在工作。当我从外向内测试时也非常必要)
javascript - 用 Jasmine 检查两个边界(在匹配器之间)
在 Jasmine 中,有toBeGreaterThan
和toBeLessThan
匹配器。
如果我想检查特定范围内的整数值怎么办?有没有类似toBeInBetween
matcher的东西?
目前,我可以通过两个单独的expect
调用来解决它:
javascript - 预期失败:“预期 [ ] 为空数组。”
这是失败的测试:
页面对象MyPage
在哪里:
errors
应该是一组可见的错误文本在页面上找到
这是我们得到的错误:
仅供参考,toBeEmptyArray()
matcher 来自jasmine-matchers
第三方。
我试图打印出scope.page.errors
这种方式的价值:
并打印为[]
. Array.isArray(errors)
返回true
。
从我所见,scope.page.errors
是一个空数组,但期望失败。我错过了什么?
javascript - toBe(true) vs toBeTruthy() vs toBeTrue()
expect(something).toBe(true)
和expect(something).toBeTruthy()
和有什么区别expect(something).toBeTrue()
?
请注意,这toBeTrue()
是在其他有用且方便的匹配器(如or )中引入的自定义匹配器。jasmine-matchers
toHaveMethod()
toBeArrayOfStrings()
这个问题是通用的,但是,作为一个真实的例子,我正在测试一个元素是否显示在protractor
. 在这种情况下我应该使用哪个匹配器?
typescript - 使用 Typescript 创建自定义茉莉花匹配器
我在 angular2 项目中使用 jasmine,并且在编写自定义匹配器进行测试时遇到了一些麻烦。我希望能够比较两个相对复杂的对象。我发现这篇文章声称可以解决这个问题,但它只会导致打字稿错误,指出它无法识别 jasmineMatchers
对象上的新方法。相关代码是这样的:
另一篇文章给出了一个类似但略有不同的解决方案,它给出了相同的错误。
我试过这个
并得到这个错误:
类型“jasmine.Matchers”不可分配给类型“jasmine.Matchers”。存在具有此名称的两种不同类型,但它们不相关。
这似乎表明该declare namespace jasmine
语句正在创建一个新的jasmine
名称空间,而不是扩展现有的名称空间。
那么我怎样才能创建自己的匹配器,打字稿会满意呢?
regex - toMatch 不适用于量角器中的页面对象
我对 Jasmine 很陌生,我正在使用 Protractor 和页面对象。这是显示的页面对象,包含规范调用的函数:
问题是 getText 之后的 toMatch 与正则表达式不匹配,根据我能找到的所有正则表达式引用,它应该。我安装了 jasmine-matchers,所以我不确定为什么会这样。这是我使用此函数运行规范时收到的堆栈:
我错过了什么?
typescript - Jasmine 自定义匹配器类型定义
我正在尝试将 typescript 定义添加到 jasmine matcher library中。
我能够为泛型类型添加匹配器,T
但现在我只想将匹配器添加到 DOM 元素。
深入研究 jasmine 类型定义代码,我发现了一种类似的方法ArrayLike
(参见这里的expect
重载和这里的ArrayLikeMatchers
)。
所以我创建了一个类似的。
但是,不工作:(
给定以下代码:
类型检查器给了我错误:
[js]“匹配器”类型上不存在属性“toBeChecked”。
唯一的解决方案似乎是在核心 jasmine 库中的泛型之前(在此处重载之后)添加expect
重载。expect
ArrayLike
但是......这是不可行的:)
关于如何正确实施有效解决方案的任何提示?
javascript - 如何为 jasmine 编写自定义匹配器以查找对象属性是否位于对象属性值范围内?
我正在尝试为 Jasmine 实现一个自定义匹配器,我想检查给定的对象属性值是否在其他两个对象属性值的范围内。
这是我到目前为止得到的:
在这里,我假设,实际有两个属性x
和y
. 并且预期是一个由两个对象组成的数组,每个对象也有两个属性x
和y
。
现在,我相信对于上面给出的简单示例,这种情况是可行的。但是当我试图将它实现为泛型时,我如何找到该对象具有哪些属性?我的方法正确吗?谁能给我一些想法,我该如何实施这种方法。
谢谢你。
javascript - 如何在自定义匹配器中恢复 Jasmine 间谍名称
我将在 Jasmine 2.0 中创建一个自定义匹配器,以根据一些附加条件验证间谍。在极大的简化中,例如:
我的问题是,如何恢复作为工厂方法的第一个参数传递的间谍名称:createSpy(name, originalFn)
?
我在Jasmine 文档 v2.6中也找不到任何在线教程。
console.log(spy)
返回function(...) {...}