Предположим, у меня есть такая функция:
function foo () {
obj.method(1);
obj.method(2);
obj.method(3);
}
Чтобы проверить это, я хочу сделать 3 теста (используя Mocha TDD и Sinon):
test('medthod is called with 1', function () {
var expectation = sinon.mock(obj).expects('method').once().withExactArgs(1);
foo();
expectation.verify();
});
test('medthod is called with 2', function () {
var expectation = sinon.mock(obj).expects('method').once().withExactArgs(2);
foo();
expectation.verify();
});
test('medthod is called with 3', function () {
var expectation = sinon.mock(obj).expects('method').once().withExactArgs(3);
foo();
expectation.verify();
});
Используя эту систему, sinon терпит неудачу с сообщением "неожиданный вызов" в каждом тесте.
Я решил, что он соединяет тесты дерева в один:
test('medthod is called with 1, 2 and 3', function () {
var mock = sinon.mock(obj);
mock.expects('method').once().withExactArgs(1);
mock.expects('method').once().withExactArgs(2);
mock.expects('method').once().withExactArgs(3);
foo();
mock.verify();
});
Но я хочу иметь три теста, а не один с тремя утверждениями/ожиданиями.
Как это можно достичь?