监视Jasmine中的JQuery选择器
|
我正在用Jasmine对一些JavaScript进行单元测试,并希望监视(模拟)由jQuery选择器访问的DOM元素。
我的规格是:
it(\"should be able to mock DOM call\", function() {
spyOn($(\"#Something\"), \'val\').andReturn(\"bar\");
result = $(\"#Something\").val();
expect(result).toEqual(\"bar\");
});
在我的specrunner.html中,我有:
<input type=\"hidden\" id=\"Something\" value=\"foo\" />
不幸的是,该规范失败了:
应该能够模拟DOM调用Expected \'foo \'等于\'bar \'。
没有找到相关结果
已邀请:
6 个回复
扭湘阀柿蹄
Jasmine的spyOn函数需要两个参数。第一个是现有对象。第二个是作为字符串的函数名称。您正确地以字符串(\“ val \”)的形式传入了函数名,但是没有以现有的对象作为第一个参数。
...不是现有对象。它是jQuery选择器的结果(返回值)。更具体地说,它将返回表示匹配节点的jQuery对象-类似于结果数组。
...是一个现有的对象。
...是一个现有的对象。
...不是现有对象-它是jQuery选择器的结果。 这将起作用:
链眷克袒姜
这不是基于您的代码,但我希望这可以帮助某人。而且,是的,例如CoffeScript中的示例。
款去芳尾脊
下次,帮助会在Jasmine邮件列表中更加普遍:jasmine-js@googlegroups.com。
艰管垮淮
苏髓骗撩
每对告诉伪造函数的id,如果使用id选择器调用jQuery-val()函数,则应返回哪个值。它的用法如下:
如果在被测函数中调用
,则伪函数返回
,如果调用called15ѭ,则返回
。因此,您无需摆弄DOM,只需模拟jQuery-val()函数并模拟返回值即可。其他jQuery函数可能以相同的方式嘲笑。
弓萍功
这是茉莉花规格的一部分
更详细的规范可以使用其他级别的模拟作为