e22m4u 7 месяцев назад
Родитель
Сommit
cee1b231a4
1 измененных файлов с 59 добавлено и 12 удалено
  1. 59 12
      README.md

+ 59 - 12
README.md

@@ -57,11 +57,30 @@ const greetSpy = createSpy(greet);
 greetSpy('World');
 greetSpy('JavaScript');
 
-console.log(greetSpy.called);                   // true
-console.log(greetSpy.callCount);                // 2
-console.log(greetSpy.getCall(0).args);          // ['World']
-console.log(greetSpy.getCall(0).returnValue);   // 'Hello, World!'
-console.log(greetSpy.calledWith('JavaScript')); // true
+console.log(greetSpy.called);    // true
+console.log(greetSpy.callCount); // 2
+
+// аргументы вызова
+console.log(greetSpy.getCall(0).args); // ['World']
+console.log(greetSpy.getCall(1).args); // ['JavaScript']
+
+// возвращаемое значение
+console.log(greetSpy.getCall(0).returnValue); // 'Hello, World!'
+console.log(greetSpy.getCall(1).returnValue); // 'Hello, JavaScript!'
+
+// тест аргументов
+console.log(greetSpy.calledWith('World'));            // true
+console.log(greetSpy.calledWith('JavaScript'));       // true
+console.log(greetSpy.calledWith('FooBar'));           // false
+
+// тест аргументов определенного вызова
+console.log(greetSpy.nthCalledWith(0, 'World'));      // true
+console.log(greetSpy.nthCalledWith(1, 'JavaScript')); // true
+console.log(greetSpy.nthCalledWith(1, 'FooBar'));     // false
+
+// тест возвращаемого значения
+console.log(greetSpy.nthCallReturned(0, 'Hello, World'));      // true
+console.log(greetSpy.nthCallReturned(1, 'Hello, JavaScript')); // true
 
 try {
   greetSpy.getCall(5); // Попытка получить несуществующий вызов
@@ -88,10 +107,36 @@ const calculator = {
 const addSpy = createSpy(calculator, 'add');
 
 calculator.add(5, 3);
-console.log(addSpy.called);                            // true
-console.log(calculator.value);                         // 8
+console.log(calculator.value); // 8
+
+calculator.add(2, 1);
+console.log(calculator.value); // 3
+
+console.log(addSpy.called);    // true
+console.log(addSpy.callCount); // 2
+
+// аргументы вызова
+console.log(addSpy.getCall(0).args); // [5, 3]
+console.log(addSpy.getCall(0).args); // [2, 1]
+
+// контекст вызова и возвращаемое значение
 console.log(addSpy.getCall(0).thisArg === calculator); // true
 console.log(addSpy.getCall(0).returnValue);            // 8
+console.log(addSpy.getCall(1).returnValue);            // 3
+
+// тест аргументов
+console.log(addSpy.calledWith(5, 3));        // true
+console.log(addSpy.calledWith(2, 1));        // true
+console.log(addSpy.calledWith('foo'));       // false
+
+// тест аргументов определенного вызова
+console.log(addSpy.nthCalledWith(0, 5, 3));  // true
+console.log(addSpy.nthCalledWith(1, 2, 1));  // true
+console.log(addSpy.nthCalledWith(1, 'foo')); // false
+
+// тест возвращаемого значения
+console.log(addSpy.nthCallReturned(0, 8)); // true
+console.log(addSpy.nthCallReturned(0, 3)); // true
 
 // восстановление оригинального метода
 addSpy.restore();
@@ -104,16 +149,17 @@ addSpy.restore();
 
 Основная функция для создания шпиона.
 
-**Сигнатуры вызова и аргументы:**
+Сигнатуры вызова и аргументы:
 
-1.  **Отслеживание отдельной функции:**  
+1. Отслеживание отдельной функции:  
     `createSpy(targetFn, [customImplementation])`
     - `targetFn`: Функция, которую требуется отслеживать.
     - `customImplementation` (необязательно): Пользовательская функция,
       которая будет вызываться вместо `targetFn`. Должна иметь ту же
       сигнатуру.
-
-2.  **Отслеживание метода объекта:**  
+  
+  
+2. Отслеживание метода объекта:  
     `createSpy(targetObject, methodName, [customImplementation])`
     - `targetObject`: Объект, метод которого будет отслеживаться.
     - `methodName`: Имя метода в `targetObject`, который требуется
@@ -122,7 +168,8 @@ addSpy.restore();
       которая будет вызываться вместо оригинального метода. Должна
       иметь ту же сигнатуру.
 
-**Возвращает:**
+Возвращает:
+
 - Функция-шпион с дополнительными свойствами и методами для инспекции.
 
 ### Свойства и методы шпиона