Я новичок в 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>
Создание get
Вызов на удаленном просто загружает любой URL, как веб-браузер. Проблема в том, что вы используете require.toUrl
ссылаться на файл PHP. Это загружает src/index.php
относительно самого файла теста. Тестовые файлы и другие связанные с Intern ресурсы загружаются через тестовый сервер Intern (известный как его «прокси»), который не обрабатывает PHP, поэтому браузер просто получит необработанный контент index.php
,
Чтобы протестировать приложение PHP, вам нужно дать get
позвоните по URL-адресу сервера, который поддерживает PHP.
Других решений пока нет …