Невозможно загрузить тестовое приспособление 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" }
]