шпионить за аргументом в метод класса, используя sinon - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть класс, за которым я хочу следить, чтобы проверить аргументы, с которыми был вызван метод.

class Animal {
  constructor() {
     this.animals = [];
  }

  add(animal) {
    this.animals.push(animal);
  }
}

Мой тестовый файл выглядит так

const chai = require('chai');
const sinon  = require('sinon');
const Lazy = require('../lazy');

it('should be able to add an animal', function () {
    const animal = new Animal();
    const add = sinon.spy(animal, 'add');
    animal.add('cat')
    expect(animal).to.have.been.called.with('cat');
});

шпион не работаетМне интересно, как проверить, что называется, с помощью sinon.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Патрик прав насчет кода, вам нужно проверить spy, а не объект, но ваш код все еще не работал без изменений.Я сделал пример функционирования на RunKit .Кажется, вам также нужно использовать calledWith, но вы могли использовать другие настройки (которых не было).Проверьте код: -)

Поэтому измените ожидание на

expect(add).to.have.been.calledWith('cat');
0 голосов
/ 04 февраля 2019

animal - это объект, шпион на самом деле add, поэтому должно быть:

expect(add).to.have.been.called.with('cat');
...