Я пишу модульные тесты для своего модуля и использую SinonJS для проверки нескольких ожиданий относительно вызовов функций другим модулям. Во-первых, зарегистрировать макет для другого модуля:Различные аргументы/возвращаемые значения для ожидания sinon
var otherModule = {
getConfig : function() {}
};
mockery.registerMock("otherModule", otherModule);
Позже я несколько тестов и (успешно) проверить некоторые ожидания, такие как:
var otherModuleMock = sinon.mock(otherModule);
otherModuleMock
.expects("getConfig")
.once()
.withArgs("A")
.returns(configValuesForA);
// run test
otherModuleMock.verify(); // <- succeeds
я столкнулся с проблемой, однако, когда модуль вызывает функцию getConfig
дважды, с различными аргументами:
otherModuleMock
.expects("getConfig")
.once()
.withArgs("A")
.returns(configValuesForA);
otherModuleMock
.expects("getConfig")
.once()
.withArgs("B")
.returns(configValuesForB);
из моего понимания документации, это, вероятно, следует работать. Однако это приводит к следующей ошибке:
ExpectationError: Unexpected call: getConfig(A)
Expectation met: getConfig(A[, ...]) once
Expectation met: getConfig(B[, ...]) once
Я попытался заменить once()
с atLeast(1)
или удалить его полностью. Я также попытался уловить ожидаемое возвращение otherModuleMock.expect("getConfig")
и применить вместо этого withArgs
и returns
. Оба безрезультатно.
Довольно уверен, что я использую mock()
таким образом, каким я не должен, но как мне отсюда идти?