Jasmine无法在Javascript原型方法中运行规范

时间:2015-07-16 19:35:34

标签: javascript unit-testing jasmine prototype

我刚刚开始使用Jasmine对我的JavaScript代码进行单元测试,我发现如果我通过describe()it()在原型方法中定义套件或规范对象,它不被识别为SpecRunner html页面上的规范。

这有什么办法吗?因为我的所有代码都是通过原型对象/方法编写的,如果我无法在那些内部进行测试,那么我无法测试任何东西,Jasmine对我来说几乎没用。另外,如果没有,JS是否有适用于原型方法/等的良好单元测试框架?

1 个答案:

答案 0 :(得分:0)

您可以轻松地测试在对象上定义的方法。使用茉莉花的原型。考虑一个基本的Person对象。

function Person(name)
{
  this._name = name;
}

Person.prototype.getName = function()
{
  return this._name;
};

要测试getName函数,请使用以下命令。

describe('Person test suite', function()
{
  it('tests getName', function()
  {
    var p = new Person('Joe');
    expect(p.getName()).toBe('Joe');
  });
});

您还可以监视对象原型上的方法。例如。

spyOn(Person.prototype, 'getName');
// Call the method.
expect(Person.prototype.getName).toHaveBeenCalled();

希望有所帮助。