Javascript 在jasmine中的expect中使用jquery选择器

Javascript 在jasmine中的expect中使用jquery选择器,javascript,jquery,jasmine,jasmine-jquery,Javascript,Jquery,Jasmine,Jasmine Jquery,我注意到,在编写jasmine单元测试时,通常的格式是: expect($('#foo')).toHaveValue('#bar'); 但最近我意外地发现以下方法也有效: expect('#foo').toHaveValue('#bar'); 这是预期的行为吗?这似乎是一个更好的方式来写我的期望,但我从来没有见过这种符号之前,我想确定我没有滥用的东西 有没有人能确认这是一条路,或者告诉我这方面的任何文件 (我用的是)我已经试过了。看起来它真的很管用,不过有一些特点 我试过这样的方法: exp

我注意到,在编写jasmine单元测试时,通常的格式是:

expect($('#foo')).toHaveValue('#bar');
但最近我意外地发现以下方法也有效:

expect('#foo').toHaveValue('#bar');
这是预期的行为吗?这似乎是一个更好的方式来写我的期望,但我从来没有见过这种符号之前,我想确定我没有滥用的东西

有没有人能确认这是一条路,或者告诉我这方面的任何文件


(我用的是)

我已经试过了。看起来它真的很管用,不过有一些特点

我试过这样的方法:

expect('.search-form').toBeInDOM();
expect('.search-form').toEqual('div');
expect('.search-form').toContainElement('.search-form__footer');
  • 第一种方法通过了,但在转换为时确实失败了
    .not.toBeInDOM()
  • 第三个看起来是一样的——它真的失败了,正在改变一些
    toContainElement的选择器不正确
  • 第二个问题是因为歧义:
    ”。搜索表单“
    可以被视为字符串和选择器
对源代码进行了非常简短的研究,看起来matchers确实可以作为选择器来解析期望值(示例):


虽然我也找不到这种能力的任何迹象。然而,源代码就是源代码),它说的就是它说的。现在它说它将把实际的for
expect
作为一个选择器。

我想提供jquery匹配器的库也提供了这个选项是有道理的。非常感谢您的洞察力!
toBeInDOM: function () {
    return {
      compare: function (actual) {
        return { pass: $.contains(document.documentElement, $(actual)[0]) }
      }
    }
  },