我刚刚开始使用Jasmine对我的JavaScript代码进行单元测试,我发现如果我通过describe()
或it()
在原型方法中定义套件或规范对象,它不被识别为SpecRunner html页面上的规范。
这有什么办法吗?因为我的所有代码都是通过原型对象/方法编写的,如果我无法在那些内部进行测试,那么我无法测试任何东西,Jasmine对我来说几乎没用。另外,如果没有,JS是否有适用于原型方法/等的良好单元测试框架?
答案 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();
希望有所帮助。