gpt4 book ai didi

unit-testing - Jasmine 的 spyOn() 是否允许执行监视功能?

转载 作者:行者123 更新时间:2023-12-01 03:46:02 25 4
gpt4 key购买 nike

Jasmine 的吗spyOn()方法允许执行被监视的函数,或者它是否在某种意义上 - 当被监视的方法(即将被)调用时拦截调用,并返回 true .

PS:谁能指出我对spyOn()的解释的内部运作?

最佳答案

spy :

spy 可以伪装成一个函数或对象,您可以在编写单元测试代码时使用它来检查函数/对象的行为

var Person = function() {};
Dictionary.prototype.FirstName = function() {
return "My FirstName";
};
Dictionary.prototype.LastName = function() {
return "My LastName";
};
Person.prototype.MyName = function() {
return FirstName() + " " + LastName();
};

Person.prototype.MyLocation = function() {
Return ”some location”;
};

describe("Person", function() {
it('uses First Name and Last Name for MyName', function() {
var person = new Person;
spyOn(person , "FirstName");
spyOn(person, "LastName");
person.MyName();
expect(person.FirstName).toHaveBeenCalled();
expect(person.LastName).toHaveBeenCalled();
});
});

通过 SpyOn 可以知道某个函数是否已经/未被调用
expect(person. MyLocation).not.toHaveBeenCalled();

您可以确保 spy 始终返回给定值并对其进行测试
spyOn(person, " MyName ").andReturn("My FirstNameMy LasttName ");
var result = person.MyName();
expect(result).toEqual("My FirstName My LasttName ");

spy 可以调用假函数
it("can call a fake function", function() {
var fakeFun = function() {
alert("I am a spy!”);
return "hello";
};
var person = new person();
spyOn(person, "MyName").andCallFake(fakeFun);
person. MyName (); // alert
})

您甚至可以创建一个新的 spy 函数或对象并使用它
it("can have a spy function", function() {
var person = new Person();
person.StreetAddress = jasmine.createSpy("Some Address");
person. StreetAddress ();
expect(person. StreetAddress).toHaveBeenCalled();
});

关于unit-testing - Jasmine 的 spyOn() 是否允许执行监视功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26912534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com