2016-12-06 4 views
0

У меня есть функция в поле ввода, которая добавляет знак процента к значению с пользовательского ввода. Функция выглядит следующим образом:Как создать единичный тест для функции, которая проходит в объекте объекта как зависимость?

addPercentSign: function (oEvent, control) { 
    var inputVal = oEvent.getParameters().value; 
    var inputNumber = parseFloat(inputVal); 

    if (inputNumber) { 
    if (inputNumber < 50 || inputNumber > 100) { 
     return null; 
    } else { 
     var finalVal = inputNumber.toFixed(1); 
     var finalOutput = finalVal + "%"; 

     control.learningCurve.setValue(finalOutput); 
    }; 
    } 
} 

Поскольку эта функция зависит от объекта события, как я могу «фиктивные» параметры (объект oEvent) (с использованием Sinon.js или издевается), чтобы создать модульный тест для этого функционировать? Эмпирическое правило для модульных тестов заключается в том, чтобы изолировать устройство (функцию AddPercentSign) максимально, без каких-либо зависимостей.

Поскольку объект oEvent - это то, как мы извлекаем пользовательский ввод, я не уверен, что стратегия заключается в написании этого конкретного теста? Я бы просто создал объект в своем модульном тесте, который выглядит идентично объекту события?

QUnit.test("Check for Percent Sign", function (assert) { 

     var testOEvent = {value: '25'} 

     assert.ok(formatter.addPercentSign(testOEvent) == 25, "Test"); 

    }); 

ответ

0

Вы вызываете эту функцию объектом, который издевается над всеми интерфейсами события, которое использует ваша функция.

Например:

var testOEvent = { 
    getParameters:function(){ 
     return {value:"1.0"} 
    } 
} 

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

  • Нет связанных вопросов^_^