Невозможно загрузить тестовое приспособление HTML для Jasmine в Visual Studio 2013

Я новичок в тестировании на стороне клиента, но написал тест Jasmine в Visual Studio, который запускает мой JS-код для HTML-фрагмента (часть моей страницы) и успешно выполняет Assert - все хорошо.

Тем не менее, я не могу загрузить HTML из тестового приспособления, как описано в документации. Я видел несколько похожих постов на эту тему, но следовал их примеру, но синтаксис кода не распознается. Я временно обошел это, поместив свой HTML в отдельную функцию и читая это при необходимости. Хотя это работает, это неудовлетворительно, так как мне нужно экранировать многострочный HTML с символом обратной косой черты в конце каждой строки, и мне не нравится делать это для всех сотен тестов, которые, как я предполагаю, я закончу написание.

Хорошо, мои настройки.

  • Visual Studio 2013
  • Синон 1.17.2
  • Тестовый адаптер Chutzpah для Test Explorer 4.1.0
  • Расширение контекстного меню Chutzpah Test Runner 4.1.0

У меня есть следующая структура каталогов в моем проекте, вещи в квадратных скобках [xyz] являются папками, а "\" означает дочерний элемент в структуре каталогов

Project
\ [MyApplicationName]
\\ [FeatureUnderTest]
\\\ myTestFile.js
\\\ myHtmlFragmentFromPage.html
\\\ myHtmlFragmentReturnedFromAjax.html
\ [Libraries]
\\ sinon-1.17.2.js

Итак, как вы можете видеть, мой тестовый файл находится в той же папке в качестве моего тестового файла. Я бы, вероятно, закончил с несколькими тестами для каждой функции - могут быть подфункции с их связанными тестами тоже. И в идеале я хотел бы, чтобы файлы HTML находились в подпапках относительно Test JS, и эта папка могла бы иметь стандартное имя, например "Fixtures". Так что я мог бы получить что-то вроде:

Project
\ [MyApplication]
\\ [Feature1]
\\\ [Fixture]
\\\\ HtmlFragA.html
\\\\ HtmlFragB.html
\\\ Feature1.Test.js

\\ [Feature2]
\\\ [SubFeature1]
\\\\ [Fixture]
\\\\\ HtmlFragA.html
\\\\\ HtmlFragB.html
\\\\ Feature2.SubFeature1.Test.js
\\\ [SubFeature2]
\\\\ [Fixture]
\\\\\ HtmlFragA.html
\\\\\ HtmlFragB.html
\\\\ Feature2.SubFeature2.Test.js
\\\ [SubFeature3]
\\\\ [Fixture]
\\\\\ HtmlFragA.html
\\\\\ HtmlFragB.html
\\\\ Feature2.SubFeature3.Test.js

\\ [Feature3]
\\\ [Fixture]
\\\\ HtmlFragA.html
\\\\ HtmlFragB.html
\\\ Feature3.Test.js

\ [Libraries]
\\ sinon-1.17.2.js

Является ли это хорошим способом разделения этих тестов для тех, кто имеет опыт работы со многими тестами? Если нет, любые указатели будут оценены.

Хорошо, на мой код.

/// <reference path="../../../myApplication/scripts/Feature1/jsFileUnderTest.js" />
describe("Given Feature 1", function (){
    describe("When AJAX call is successful", function() {
        // Currently load from functions
        var html = htmlFragmentFromDom();
        var ajaxResponse = ajaxResponse();

        beforeEach(function() {
            $('body').append(html);

            sinon.stub($, 'ajax', function (options){
                var dfd = $.Deferred();
                if (options.success) {dfd.done(options.success(ajaxResponse));}
                if (options.error) {dfd.fail(options.error);}
                dfd.success = dfd.done;
                dfd.error = dfd.fail;
                return dfd;
            });
        });    
        afterEach(function() {
            $(html).remove();
            $.ajax.restore();
        });

        if("Then abc Should Be 123", function (){
            ....
        });
    });
});
function htmlFragmentFromDom(){
    return '... /
            .....';
}
function ajaxResponse(){
    return '... /
            .....';
}

Содержание моего Chutzpah.json выглядит следующим образом:

{
    "Framework": "jasmine",
    "TestHarnessLocationMode": "TestFileAdjacent",
    "TestFileTimeout": "120000",
    "References": [
        { "Path": "../../myApplication/scripts/jquery/jquery-1.11.2.js" },
        { "Path": "../../myApplication/scripts/jquery/jquery-ui-1.11.4.js" },
        { "Path": "../libraries/sinon-1.17.2.js" }
    ]
}

Итак, если кто-то знает, что мне нужно сделать, чтобы иметь возможность читать в HTML (для фрагмента DOM, на котором будет выполняться тестируемый JavaScript, и для HTML, возвращенного из вызова AJAX, то я буду очень признателен.

Griff

1 ответ

Chutzpah поддерживает внедрение шаблонов HTML в дом. Просто обратитесь к файлу HTML из chutzpah.json, и он должен работать:

"References": [
        { "Path": "myHtmlFile.html" }
    ]
Другие вопросы по тегам