Jasmine测试一个对象是否有某种方法

Fee*_*ics 23 javascript coffeescript jasmine

我正在使用Jasmine,我想测试一个对象是否有某种方法,如下所示:

it "should have 'open' method", ->
    @xhr = ajax.create()
    expect(@xhr).toHaveMethod "open" # I want to test like this!
Run Code Online (Sandbox Code Playgroud)

我怎么测试?谢谢你的好心.

Suk*_*ima 28

@david正确回答.toBeDefined()可能就是你想要的.但是,如果你想验证它是一个功能,而不是一个属性,那么你可以用toEqual()jasmine.any(Function).这是一个例子:http://jsbin.com/eREYACe/1/edit


HoL*_*ieR 24

没有内置的方法可以做到这一点,但是你可以通过这样做来达到预期的效果.

it "should have 'open' method", ->
    @xhr = ajax.create()
    expect(typeof @xhr.open).toBe("function")
Run Code Online (Sandbox Code Playgroud)

请注意,测试是否在另一个答案中定义为已定义为具有一些边缘情况,它将通过而不应该通过.如果你采用以下结构,它将通过,它绝对不是一个功能.

{ open : 1 }
Run Code Online (Sandbox Code Playgroud)


Dav*_*vid 11

我会尝试:

it "should have 'open' method", ->
    @xhr = ajax.create()
    expect(@xhr.open).toBeDefined()
Run Code Online (Sandbox Code Playgroud)

看到这个小提琴.