Как заставить заглушку возвращать определенную заглушку, если параметры совпадают (например, маршрутизация заглушки)? - PullRequest
0 голосов
/ 08 октября 2018

Итак, у меня есть код, в основном такой:

var myStub = sinon.stub();
myStub.withArgs(sinon.match.has("key":"value")).returns({status: "OK!"});

И я хочу использовать его в заглушке, например:

stub.WithArgs(sinon.match.has("name","Configuration)).returns(myStub(params))

, где аргументы передаются моей заглушкепо существу передаются моему вызову getConfig ТОЛЬКО если есть свойство с именем "name" со значением "Configuration".

Где оно называется так:

myFunction(
{
   name: "Configuration,
   params: {
      key: "value"
   }
}

Это делаетсмысл?Каков правильный подход Синона к этому?

Заранее спасибо!

1 Ответ

0 голосов
/ 09 октября 2018

Вы можете использовать callsFake:

stub.withArgs(sinon.match.has("name", "Configuration")).callsFake((arg) => myStub(arg.params));

Вот полный рабочий Jest тест:

import * as sinon from 'sinon';

test('call stub from stub', () => {
  var myStub = sinon.stub();
  myStub.withArgs(sinon.match.has("key", "value")).returns({ status: "OK!" });

  const stub = sinon.stub();
  stub.withArgs(sinon.match.has("name", "Configuration")).callsFake((arg) => myStub(arg.params));

  const response = stub({
    name: "Configuration",
    params: {
      key: "value"
    }
  });

  expect(response).toEqual({ status: "OK!" });  // SUCCESS
});
...