2015-07-09 3 views
2

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

var clientMock = sandbox.mock(client); // client is defined up somewhere 
clientMock 
    .expects('_request') 
    .withArgs({ 
    method: 'POST', 
    form: { 
     commands: [{ 
     type: "item_add", 
     temp_id: '???',  // <== This is random value 
     uuid: '???',   // <== Another random value 
     args: { ... } 
     }] 
    } 
    }, sinon.match.func); 

Как я могу установить тест для этого?

Или как я могу игнорировать эти конкретные свойства и проверять другие?

Спасибо.

ответ

1

sinon.match will help you

sandbox.mock(client) 
    .expects('_request') 
    .withArgs({ 
    method: 'POST', 
    form: { 
     commands: [{ 
     type: "item_add", 
     temp_id: sinon.match.string, // As you probably passing String 
     uuid: sinon.match.string, // As you probably passing String 
     args: { ... } 
     }] 
    } 
    }, sinon.match.func); 

================

sandbox.mock(client) 
    .expects('_request') 
    .withArgs(sinon.match(function(obj) { 
     var command = obj.form.commands[0]; 
     return obj.method === 'POST' 
     && command.type === 'item_add' 
     && _.isString(command.temp_id) 
     && _.isString(command.uuid); 
     }, "Not the same!"), sinon.match.func); 
+0

Благодаря @Krzysztof ... используя sinon.match.string таким образом не делает дать желаемый результат. – roboli

Смежные вопросы