2017-02-20 50 views
2

茉莉写单元测试时我注意到,你通常格式为:使用jQuery选择

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

但最近我偶然发现,以下也适用:

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

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

任何人都可以证实这是要走的路或指引我的任何文件?

(我用的是jasmine jquery library

回答

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作为选择器。

+0

我想这是有道理的,提供jquery匹配器的库也提供了这个。非常感谢您的见解! –