在 jasmine 的 expect 中使用 jquery 选择器

Using jquery selectors in an expect in jasmine

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

expect($('#foo')).toHaveValue('#bar');

但最近我无意中发现以下方法也有效:

expect('#foo').toHaveValue('#bar');

这是预期的行为吗?这似乎是一种更好的方式来写我的期望,但我以前从未见过这种符号,我想确保我没有滥用某些东西。

任何人都可以确认这是要走的路或指导我查看任何相关文档吗?

(我用的是jasmine jquery library

我对此进行了一些尝试。看起来它确实有效,但有一些特殊之处。

我试过类似的东西:

expect('.search-form').toBeInDOM();
expect('.search-form').toEqual('div');
expect('.search-form').toContainElement('.search-form__footer');
  • 第一个通过了,改成真的失败了 .not.toBeInDOM();
  • 第三个看起来一样——它真的失败了,正在改变一些 toContainElement
  • 的错误选择器
  • 第二个是一个问题,因为含糊不清:'.search-form' 可以被视为字符串和选择器。

对源代码进行了非常简短的查看,看起来匹配器确实解决了作为选择器的实际期望(示例 from):

toBeInDOM: function () {
    return {
      compare: function (actual) {
        return { pass: $.contains(document.documentElement, $(actual)[0]) }
      }
    }
  },

虽然我在their docs中也找不到任何这种能力的迹象。不过,源代码就是源代码 ))) 它说的就是它说的。现在它说它将 expect 的实际值视为选择器。