2015-02-05 7 views
0

Я очень новичок в Jasmine, infact. Я только что начал сегодня и не имею предварительных знаний, записывающих тестовые примеры JS. Я пишу блок-тест с использованием Jasmine для внешнего файла javascript. К сожалению, я я не совсем уверен, как написать единичный тест для функции без каких-либо параметров. Все примеры, которые я видел до сих пор, показывают функцию с по крайней мере одним параметром и возвращаемым значением.Единичное тестирование javascript с использованием шаблона Jasmine

файла JavaScript с помощью функции испытываемого. (CreateProvider.js)

var provider = function() { 
     var self = this; 

self.formatPhoneNumber = function() { 
    if (self.contactNumber().length == 10) { 
     self.contactNumber(self.contactNumber().replace(/(\d{3})(\d{3})(\d{4})/, "($1)$2-$3")); 
     $("#contactNumber").rules("remove", "max"); 
     $("#contactNumber").rules("add", { maxlength: 13 }); 
    } 
}; 

self.formatSSN = function() { 
    if (self.SSN().length == 9) { 
     self.SSN(self.SSN().replace(/(\d{3})(\d{2})(\d{4})/, "$1-$2-$3")); 
     $("#SSN").rules("remove", "max"); 
     $("#SSN").rules("add", { maxlength: 11 }); 
    } 
}; 
}; 

Теперь, я создал еще один проект для жасминового testing.Here я создал еще один файл Javascript.

/// <reference path = ""../../App_Scripts/CreateProvider.js"" /> 

describe("providerTests", function() { 
    var Provider; 

    beforeEach(function() { 
     Provider = new provider(); 
    }); 

it("should format a phone number", function() { 
    //Unit test a function without parameters 
}); 

});

Не могли бы вы помочь мне в правильном направлении.

+0

Переместить логику вы хотите проверить в функцию, которая принимает параметры. –

+0

Итак, нет ли способа тестирования функции, которая не принимает параметры? .. кроме того, что вы предложили. –

+0

Где ваш self.contactNumber и я. Функция SSN() –

ответ

0

Где ваш комментарий Я думаю, вам нужно добавить что-то вроде этого:

expect(Provider.SSN()).toBe(/*whatever you expect it to be*/); 
+0

Фактически Если вход 111111111, я ожидаю, что он будет отформатирован примерно так 111-11-1111.Can Я пишу что без фактического ввода ввода. Я иду попробовать, хотя –

+0

Я не уверен, что понимаю. Чтобы проверить функцию SSN(), вам нужно будет предоставить вход, запустить часть тестируемого кода и затем проверить выход. В приведенном выше примере у вас может быть строка непосредственно над ней, которая выполняет функцию (может быть, SSN ('1111111')); то вы проверите результат, чтобы проверить его соответствие вашим ожиданиям. – garryp

+0

На самом деле это функция, вызываемая событием размытия поля. Таким образом, поле уже будет заполнено. Нет необходимости в входных параметрах. –

0

Вы можете написать тестовый пример, как этот

// Success test case 

it("should format a phone number", function (done) { 
    provide.contactNumber(0801111111); 
    provider.formatPhoneNumber(); 
    expect(Provider.contactNumber()).toBe('(080)111-1111') 
    done(); 
}); 
// fail test case since length in not 10 
it("length is not equal to 10", function (done) { 
    provide.contactNumber(080111111); 
    provider.formatPhoneNumber(); 
    expect(Provider.contactNumber()).toBe(080111111) 
    done(); 
}); 
+0

К сожалению, у меня есть ссылочная ошибка, указывающая, что «поставщик не определен» и «Невозможно прочитать свойство» contactNumber «неопределенного». –

+0

typo error it will Provider, я не заметил, что вы написали var Provider = новый провайдер –

+0

@AbhishekKS: в вашем 'описании' вы объявляете переменную, называемую« Provider », а затем в' beforeEach' вы устанавливаете значение как ' new provider() '--- У вас есть соглашения об именах для JavaScript полностью назад. «Классы» в JavaScript должны быть PascalCase, например. «Поставщик», и ваши переменные должны быть camelCase, например. 'Provider'. Кстати, вот почему вы получаете сообщение об ошибке. –

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