在jasmine中使用jquery选择器

时间:2017-02-20 08:22:36

标签: javascript jquery jasmine jasmine-jquery

我注意到你在编写茉莉花单元测试时通常采用以下格式:

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

但最近我偶然发现以下内容也有效:

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

这是预期的行为吗?这似乎是一个更好的方式来写我的期望,但我以前从未见过这种表示法,我想确定我没有滥用的东西。

有人可以确认这是方法或指导我的任何文件吗?

(我正在使用jasmine jquery library

1 个答案:

答案 0 :(得分:1)

我已经玩了一下。看起来它确实有效,但有一些特点。

我尝试过这样的事情:

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的实际值视为选择器。