Как написать модульный тестовый пример для функции ниже JavaScript, используя Jasmine - PullRequest
0 голосов
/ 09 ноября 2018

Как написать тестовый блок для функции ниже javascript с использованием Jasmine?

function GetURLParameter(sParam) {
    var sPageURL = window.location.search.substring(1);
    var sURLVariables = sPageURL.split('&');
    for (var i = 0; i < sURLVariables.length; i++) {
        var sParameterName = sURLVariables[i].split('=');
        if (sParameterName[0] == sParam) {
            return sParameterName[1];
        }
    }
}

1 Ответ

0 голосов
/ 09 ноября 2018

Согласно документации по жасмину, жасмин содержит две вещи: описание и спецификации.

Функция description предназначена для группировки связанных спецификаций, обычно каждая тестовый файл имеет один на верхнем уровне. Параметр строки предназначен для именования коллекция спецификаций, и будет объединена со спецификациями, чтобы сделать полное имя спец. Это помогает найти спецификации в большом наборе. если ты Назовите их хорошо, ваши спецификации читаются как полные предложения в традиционном BDD стиль.

Спецификации определяются путем вызова глобальной функции Jasmine it, которая Как описание принимает строку и функцию. Строка является заголовком спецификации и функции - это спецификация или тест. Спецификация содержит один или больше ожиданий, которые проверяют состояние кода. Ожидание у Жасмин есть утверждение, которое является либо истинным, либо ложным. Спецификация с все истинные ожидания - мимолетная спецификация. Спецификация с одним или несколькими ложными ожидания - провальная спецификация.

Подробнее здесь

Вы можете сделать что-то вроде этого:

function GetURLParameter(sParam) {   
    var sPageURL = "email=someone@example.com"; //replace it with your
    var sURLVariables = sPageURL.split('&');
    for (var i = 0; i < sURLVariables.length; i++) {
        var sParameterName = sURLVariables[i].split('=');
        if (sParameterName[0] == sParam) {
            return sParameterName[1];
        }
    }
}
// specs code
describe("check for url", function() {
  //defining it should be something
  it("should be defined", function() {
    expect(GetURLParameter).toBeDefined();
  });
  
  it("should run", function() {
    expect(GetURLParameter('email')).toEqual("someone@example.com");
  });
  
 

});

var NOT_IMPLEMENTED = undefined;

// load jasmine htmlReporter
(function() {
  var env = jasmine.getEnv();
  env.addReporter(new jasmine.HtmlReporter());
  env.execute();
}());
<script src="https://cdn.jsdelivr.net/jasmine/1.3.1/jasmine.js"></script>
<link href="https://cdn.jsdelivr.net/jasmine/1.3.1/jasmine.css" rel="stylesheet"/>
<script src="https://cdn.jsdelivr.net/jasmine/1.3.1/jasmine-html.js"></script>
...