Как использовать систему внутреннего тестирования для функционального тестирования динамически генерируемого содержимого сервера

Я новичок в Intern Framework и пытаюсь понять, как выполнять функциональные тесты на сервере сгенерированного кода. Внутренняя документация говорит заранее, что это возможно, но не дает более подробного объяснения. Я не могу понять, как настроить проект так, чтобы мой php-код выполнялся, когда специалист по тестированию интернета загружает мою страницу.

У меня есть рекомендованная внутренняя файловая структура с двумя файлами в каталоге src: test.php и test.html. Если я запускаю свой функциональный тест на test.html с тестовым прогоном, он проходит просто отлично; однако, если я запускаю его с test.php, браузер просто загружает файл и не проходит тест.

Мой файл Intern Config:

// tests/intern.js

define({
capabilities: {
'browserstack.selenium_version': '2.45.0'
},

// Maximum number of simultaneous integration tests that should be executed on the remote WebDriver service
maxConcurrency: 2,

tunnel: 'NullTunnel',
environments: [ { browserName: 'chrome' } ],

loaderOptions: {
// Packages that should be registered with the loader in each testing environment
packages: [ { name: 'myPackage', location: '.' } ]
},

// Functional test suite(s) to execute against each browser once non-functional tests are completed
functionalSuites: [  'tests/functional/index.js'  ],

// A regular expression matching URLs to files that should not be included in code coverage analysis
excludeInstrumentation: /^(?:tests|node_modules)\//
});

Мой функциональный тест:

// tests/functional/index.js

define(function (require) {
var registerSuite = require('intern!object');
var assert = require('intern/chai!assert');

registerSuite({
name: 'index',

'get Header': function () {
return this.remote
.get(require.toUrl('src/index.php'))
.setFindTimeout(5000)
.findByTagName('h1')
.setFindTimeout(5000)
.getVisibleText()
.then(function(text) {
assert.equal(text, "Home",
'calling getHeader for home page should return Home');
});
}
});
});

Моя страница PHP:

// src/test.php

<?php

// do php stuff

if (isset($_GET["returnJson"])) {
// return php stuff
} else {
?>
<!DOCTYPE html>
<!--[if lte IE 8]> <html class="lte-ie8"> <![endif]-->
<!--[if IE 9]> <html class="lte-ie9"> <![endif]-->
<!--[if gt IE 9]><!--> <html> <!--<![endif]-->
<head></head>

<body>

<h1>Home</h1>

</body>
</html>
}

Моя HTML-страница:

// src/test.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Intern And Server Generated Content</title>
</head>
<body>
<h1>Home</h1>
</body>
</html>

1

Решение

Создание get Вызов на удаленном просто загружает любой URL, как веб-браузер. Проблема в том, что вы используете require.toUrl ссылаться на файл PHP. Это загружает src/index.php относительно самого файла теста. Тестовые файлы и другие связанные с Intern ресурсы загружаются через тестовый сервер Intern (известный как его «прокси»), который не обрабатывает PHP, поэтому браузер просто получит необработанный контент index.php,

Чтобы протестировать приложение PHP, вам нужно дать get позвоните по URL-адресу сервера, который поддерживает PHP.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]