JasmineJS - สายลับ
สายลับจัสมินเป็นอีกหนึ่งฟังก์ชันที่เหมือนกับชื่อที่ระบุ จะช่วยให้คุณสามารถสอดแนมการเรียกใช้ฟังก์ชันแอปพลิเคชันของคุณ เทคโนโลยีการสอดแนมในจัสมินมีอยู่สองประเภท วิธีการแรกสามารถดำเนินการได้โดยใช้spyOn() และสามารถใช้วิธีการที่สองได้โดยใช้ createSpy(). ในบทนี้เราจะเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการทั้งสองนี้
สปายออน ()
spyOn () ถูกสร้างขึ้นในห้องสมุดจัสมินซึ่งช่วยให้คุณสามารถสอดแนมรหัสที่แน่นอนได้ ให้เราสร้างไฟล์ข้อมูลจำเพาะใหม่“ spyJasmineSpec.js” และอื่น ๆjsชื่อไฟล์ว่า "spyJasmine.js" ต่อไปนี้เป็นรายการของสองไฟล์นี้
SpyJasmine.js
var Person = function() {};
Person.prototype.sayHelloWorld = function(dict) {
return dict.hello() + " " + dict.world();
};
var Dictionary = function() {};
Dictionary.prototype.hello = function() {
return "hello";
};
Dictionary.prototype.world = function() {
return "world";
};
SpyJasmineSpec.js
describe("Example Of jasmine Spy using spyOn()", function() {
it('uses the dictionary to say "hello world"', function() {
var dictionary = new Dictionary;
var person = new Person;
spyOn(dictionary, "hello"); // replace hello function with a spy
spyOn(dictionary, "world"); // replace world function with another spy
person.sayHelloWorld(dictionary);
expect(dictionary.hello).toHaveBeenCalled();
// not possible without first spy
expect(dictionary.world).toHaveBeenCalled();
// not possible withoutsecond spy
});
});
ในโค้ดด้านบนเราต้องการให้วัตถุบุคคลพูดว่า "สวัสดีชาวโลก" แต่เราก็ต้องการให้วัตถุบุคคลนั้นปรึกษากับวัตถุพจนานุกรมเพื่อให้ผลลัพธ์ที่เป็นตัวอักษร "สวัสดีชาวโลก"
ดูไฟล์ Spec ที่คุณจะเห็นว่าเราใช้ฟังก์ชัน spyOn () ซึ่งเลียนแบบการทำงานของ hello และ worldฟังก์ชัน ดังนั้นเราจึงไม่ได้เรียกใช้ฟังก์ชันจริง ๆ แต่เป็นการเลียนแบบการเรียกฟังก์ชัน นั่นคือความพิเศษของ Spies โค้ดด้านบนจะให้ผลลัพธ์ดังต่อไปนี้
createSpy ()
อีกวิธีหนึ่งในการรับฟังก์ชันการสอดแนมคือการใช้ createSpy () ให้เราปรับเปลี่ยนสองของเราjs ไฟล์โดยใช้รหัสต่อไปนี้
SpyJasmine.js
var Person = function() {};
Person.prototype.sayHelloWorld = function(dict) {
return dict.hello() + " " + dict.world();
};
var Dictionary = function() {};
Dictionary.prototype.hello = function() {
return "hello";
};
Dictionary.prototype.world = function() {
return "world";
};
SpyJasmineSpec.js
describe("Example Of jasmine Spy using Create Spy", function() {
it("can have a spy function", function() {
var person = new Person();
person.getName11 = jasmine.createSpy("Name spy");
person.getName11();
expect(person.getName11).toHaveBeenCalled();
});
});
ดูไฟล์ข้อมูลจำเพาะเรากำลังเรียกไฟล์ getName11() ของ Personวัตถุ. แม้ว่าฟังก์ชันนี้จะไม่มีอยู่ในวัตถุบุคคลในspy Jasmine.jsเราไม่ได้รับข้อผิดพลาดใด ๆ ดังนั้นผลลัพธ์จึงเป็นสีเขียวและเป็นบวก ในตัวอย่างนี้เมธอด createSpy () เลียนแบบการทำงานของ getName11 ()
โค้ดด้านบนจะสร้างผลลัพธ์ต่อไปนี้