是否有人使用虚拟主机的代码?如果是这样,你是如何让它工作的?
我有两个测试机器,一个WAMP,一个Ubuntu,两个都设置了虚拟主机。当我运行一个非常基本的代码验收测试时,我得到的响应似乎是在尝试转到默认页面,而不是我虚拟主机的索引页面。
我的虚拟主机名为test;我的/etc/hosts
文件的一部分如下所示:
127.0.0.1 test
/etc/apache2/sites-enabled/test
看起来像这样:
<VirtualHost *:80>
ServerName test
DocumentRoot '/home/joel/projects/web/test'
<Directory '/home/joel/projects/web/test'>
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
我几乎只使用默认的验收套件设置文件;唯一的变化是在tests/acceptance.suite.yml
中输入虚拟机的名称:
class_name: WebGuy
modules:
enabled:
- PhpBrowser
- WebHelper
config:
PhpBrowser:
url: 'http://test'
在/home/joel/projects/web/test/index.html
中,我有一个非常简单的网页:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Index</title>
</head>
<body>
Hello, World!
</body>
</html>
我可以在我尝试的任何浏览器中成功加载此页面,包括wget和curl。
我的代码测试也非常简单。在tests/acceptance/WelcomeCept.php
:
<?php
$I = new WebGuy($scenario);
$I->amOnPage('/');
$I->see('Hello');
当我尝试运行此测试时,我得到了这个输出:
Codeception PHP Testing Framework v1.6.6
Powered by PHPUnit 3.7.24 by Sebastian Bergmann.
Suite unit started
Suite functional started
Suite acceptance started
Running WelcomeCept.php - Failed
Time: 15 ms, Memory: 20.25Mb
There was 1 failure:
---------
1) WelcomeCept.php
Ups, I couldn't see "Hello",
Failed asserting that
--> It works! This is the default web page for this server. The web server software is running but no content has been added, yet.
--> contains "hello".
Scenario Steps:
2. I see "Hello"
1. I am on page "/"
FAILURES!
Tests: 1, Assertions: 1, Failures: 1.
我的默认网页(127.0.0.1)确实返回“它有效!”消息,但虚拟主机的任何内容都转到“Hello,World”页面。知道为什么代码不会进入我的虚拟主机吗?关于如何追踪导致问题的任何想法?
谢谢!
- 乔尔
修改
我明白了。 tests/acceptance.suite.yml
中需要端口号,因此不起作用:
config:
PhpBrowser:
url: 'http://test'
但这确实有效:
config:
PhpBrowser:
url: 'http://test:80'
这似乎没有在任何地方记录,并且它不直观,所以我提出了一个拉取请求默认为端口80.这可能很快就不是问题。