标签: phpunit

未建立连接。可能“xdebug.remote_host=host.docker.internal”不正确。更改“xdebug.remote_host”

我正在尝试通过 PhpStorm (v2022.3.2) 使用 Xdebug (v3) 从 Docker 容器内部调试 PHPUnit 测试方法。

Xdebug 已正确设置,PhpStorm 中的服务器也是如此。

事实上,如果我从命令行运行测试,Xdebug 将在断点处停止:

XDEBUG_SESSION=1 PHP_IDE_CONFIG="serverName=myapp.localhost" vendor/bin/phpunit --testdox --filter testProfileUpdate
Run Code Online (Sandbox Code Playgroud)

如果我单击测试方法左侧的“bug”图标来调试测试,则会收到以下错误:

未建立连接。可能“xdebug.remote_host=host.docker.internal”不正确。更改“xdebug.remote_host”。

查看PhpStorm 执行的调试测试方法的命令,我看到的是:

[docker://myapp:latest/]:php -dxdebug.mode=debug -dxdebug.client_port=9000 -dxdebug.client_host=host.docker.internal /opt/project/vendor/phpunit/phpunit/phpunit --configuration /opt/project/phpunit.xml --filter "/(ProfileTest::testProfileUpdate)( .*)?$/" --test-suffix ProfileTest.php /opt/project/tests --teamcity
Run Code Online (Sandbox Code Playgroud)

尝试配置另外两个标志

我还尝试配置另外两个标志

  • -dxdebug.idekey="serverName=myapp.localhost"
  • -dxdebug.session=1

结果命令是这样的:

[docker://myapp:latest/]:php -dxdebug.mode=debug -dxdebug.client_port=9000 -dxdebug.client_host=host.docker.internal -dxdebug.idekey="serverName=myapp.localhost" -dxdebug.session=1 /opt/project/vendor/phpunit/phpunit/phpunit --configuration /opt/project/phpunit.xml --filter "/(ProfileTest::testProfileUpdate)( .*)?$/" --test-suffix ProfileTest.php /opt/project/tests --teamcity
Run Code Online (Sandbox Code Playgroud)

同样使用此配置,Xdebug 不会启动并且断点将被忽略(并且会弹出错误消息)。

尝试禁用 PhpStorm 传递的参数

我尝试禁用 PhpStorm 自动传递的参数,转到“设置”>“PHP”>“调试”。

然后,在“高级设置”部分中,我取消标记了“通过命令行传递所需的配置选项”选项。

现在,生成的命令是这样的:

[docker://myapp:latest/]:php /opt/project/vendor/phpunit/phpunit/phpunit --configuration /opt/project/phpunit.xml --filter …
Run Code Online (Sandbox Code Playgroud)

phpunit xdebug phpstorm docker xdebug-3

1
推荐指数
1
解决办法
1241
查看次数

这段代码是安全的 - PHP && MySQL

<?php
class test_class {

        public function __construct() { 

        }
        public function doLogin($username,$password) {

            include("connection.php");

            $query = "SELECT *
                      FROM users
                      WHERE username = '".mysql_escape_string($username)."'
                      AND password = '".mysql_escape_string($password)."'";
            $result = mysql_fetch_array(mysql_query($query));
            if(!$result) {

            return 'no';
            }
            else 
                {
            return 'yes';
                }
            }


}
?>
Run Code Online (Sandbox Code Playgroud)

上面的代码有效,但有点担心它的安全性与否.

注意:我没有使用POST方法,所以我必须在函数中接收它作为参数,我不能使用.

if (isset($_POST['username']) && isset($_POST['password']))
        {
        $username= $_POST['username'];
        $password= $_POST['password'];
Run Code Online (Sandbox Code Playgroud)

phpunit

0
推荐指数
1
解决办法
221
查看次数

PHPUnit ::如何测试受保护变量的__construct?

PhpUnit ::如何测试受保护变量的__construct?

(并不总是我们应该添加公共方法getVal() - soo而不添加返回受保护变量值的方法)

例:

  class Example{
    protected $_val=null;
    function __construct($val){
      $this->_val=md5 ($val);
    }
   }
Run Code Online (Sandbox Code Playgroud)

编辑:

在返回void的函数中也存在测试问题


EDIT2:

我们需要测试__construct的原因示例:

class Example{
        protected $_val=null;
       //user write _constract instead __construct
        function _constract($val){
          $this->_val=md5 ($val);
        }

       function getLen($value){
         return strlen($value);
       }
 }

 class ExampleTest extends PHPUnit_Framework_TestCase{
     test_getLen(){
       $ob=new Example();//call to __construct and not to _constract
        $this->assertEquals( $ob->getLen('1234'), 4);
     }
 }
Run Code Online (Sandbox Code Playgroud)

测试运行正常,但没有创建示例类"构造函数"!

谢谢

phpunit zend-test

0
推荐指数
1
解决办法
1256
查看次数

运行php-activerecord的phpunit失败

我正在尝试测试php-activerecord,它有一些测试.运行时:

phpunit sometestname

没啥事儿.我检查了代码,

include 'helpers/config.php';

require_once dirname(__FILE__) . '/../lib/Inflector.php';

class InflectorTest extends SnakeCase_PHPUnit_Framework_TestCase

{
    public function set_up()
    {
        $this->inflector = ActiveRecord\Inflector::instance();
    }

    public function testOne()
    {
        $this->assertTrue(2+2==4);
    }
Run Code Online (Sandbox Code Playgroud)

任何的想法?

在此输入图像描述

php phpunit phpactiverecord

0
推荐指数
1
解决办法
482
查看次数

PHPUnit:使用Mock修改返回值?

我想有一个PHPUnit Mock,它执行一个像normal一样的方法,但是在函数返回之前以某种方式修改返回值.

是)我有的

我有一组派生类,类似于下面:

abstract class Base
{
    abstract protected function getUrl();
    public function callUrl() {
        $url = $this->getUrl();
        // some code to call the URL here
    }   
}

class Foo extends Base
{
    protected function getUrl() {
        return "http://www.example.com/Foo";
    }   
}

class Bar extends Base
{
    protected function getUrl() {
        return "http://www.example.com/Bar";
    }   
}
Run Code Online (Sandbox Code Playgroud)

请注意我的课程要复杂得多,我必须测试的一些项目有副作用(例如写入数据库等).

天真的,重复的代码方法

如果我只有一个派生类(例如; Foo),那么我可以执行以下操作:

class FooMock extends Foo
{   
    protected function getUrl() {
        return parent::getUrl() . "?sandbox";
    }   
}   

class theTest extends PHPUnit_Framework_TestCase
{   
    public …
Run Code Online (Sandbox Code Playgroud)

php phpunit unit-testing

0
推荐指数
1
解决办法
2034
查看次数

我如何告诉PHPUnit我的测试位于何处?

今天花了几个小时搜索并看到几个人有同样的问题后,我想我转向了SO.

我运行WAMP堆栈; 我已经使用PEAR成功安装了PEAR和PHPUnit 3.6.我可以通过命令行运行phpunit.

我的WAMP文件夹位于C:\ wamp - 我有几个www文件夹 - 为了举个例子,假设我有一个位于C:\ www\myproject的MVC应用程序.

/myproject
    /application
        /controllers
        /models
        /modules
            /forum
                /controllers
                /models
                /tests
                /views
        /views
    /public_html
    /tests
Run Code Online (Sandbox Code Playgroud)

当我运行类似的东西时,我想知道PHPUnit在哪里

phpunit ArrayTest

任何帮助非常感谢,谢谢

php phpunit

0
推荐指数
1
解决办法
1039
查看次数

PHPUnit - 数据库测试,如何管理它

好吧,正如在标题中,我可以想到三种方法来管理测试数据库输出(我在我的应用程序中使用ORM,在单元测试中使用PDO).哪个最好?你怎么处理这个?:

  1. 使用我想要专门用于测试的数据创建数据集,并更改代码以使其读取xml而不是ORM数组(在测试类中).

  2. 创建setUp()方法,设置包含ORM数组的属性,并对其进行处理.

  3. 与第二点相同,但使用另一个专门为测试而创建的数据库

php database phpunit unit-testing

0
推荐指数
1
解决办法
3612
查看次数

PHPUnit测试错误

我正试图在Netbeans的PHPUnit中编写我的第一个测试.我试图在Netbeans网站http://netbeans.org/kb/docs/php/phpunit.html上关注这个例子,但我一直收到以下错误.我不知道发生了什么,因为我按照我在网站上的指示做了所有事情.

> PHP Fatal error:  Class 'Calculator' not found in C:\wamp\www\Calculator\tests\CalculatorTest.php on line 18
PHP Stack trace:
PHP   1. {main}() C:\wamp\bin\php\php5.3.8\phpunit:0
PHP   2. PHPUnit_TextUI_Command::main() C:\wamp\bin\php\php5.3.8\phpunit:46
PHP   3. PHPUnit_TextUI_Command->run() C:\wamp\bin\php\php5.3.8\pear\PHPUnit\TextUI\Command.php:130
PHP   4. PHPUnit_TextUI_TestRunner->doRun() C:\wamp\bin\php\php5.3.8\pear\PHPUnit\TextUI\Command.php:192
PHP   5. PHPUnit_Framework_TestSuite->run() C:\wamp\bin\php\php5.3.8\pear\PHPUnit\TextUI\TestRunner.php:325
PHPUnit 3.6.12 by Sebastian Bergmann.
PHP   6. PHPUnit_Framework_TestSuite->run() C:\wamp\bin\php\php5.3.8\pear\PHPUnit\Framework\TestSuite.php:705
PHP   7. PHPUnit_Framework_TestSuite->runTest() C:\wamp\bin\php\php5.3.8\pear\PHPUnit\Framework\TestSuite.php:745
PHP   8. PHPUnit_Framework_TestCase->run() C:\wamp\bin\php\php5.3.8\pear\PHPUnit\Framework\TestSuite.php:772
PHP   9. PHPUnit_Framework_TestResult->run() C:\wamp\bin\php\php5.3.8\pear\PHPUnit\Framework\TestCase.php:751
PHP  10. PHPUnit_Framework_TestCase->runBare() C:\wamp\bin\php\php5.3.8\pear\PHPUnit\Framework\TestResult.php:649
PHP  11. CalculatorTest->setUp() C:\wamp\bin\php\php5.3.8\pear\PHPUnit\Framework\TestCase.php:801
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激,以帮助我理解你做错了什么.

屏幕截图 在此输入图像描述

php phpunit netbeans

0
推荐指数
1
解决办法
4613
查看次数

如何确保PHPUnit中的数组相等?

我正在测试一个网站的下拉菜单,按名称排序.

$nameSort = array();
    $numOfNames = $this->getXpathCount("//td[@class='entry']");
    for($count = 1; $count <= $numOfNames; $count ++) {
        $get = $this->getText("xpath=(//td/a[contains(@href, '')])[$count]");
        array_push($nameSort, $get);
    }
    $test = sort($entrySort);
    $this->assertEquals($entrySort, $test);
Run Code Online (Sandbox Code Playgroud)

但它说"有1次失败:

NameTest::testNameTab true does not match expected type "array".

php selenium phpunit

0
推荐指数
1
解决办法
759
查看次数

如何在Windows 07 64位中使用composer安装PHPUnit?

我有Windows 07 64位操作系统,我已经下载了作曲家以及我正在运行wampserver wampserver2.2e-php5.3.13-httpd2.2.22-mysql5.5.24-x64.exe.我曾尝试使用composer安装PHPUnit但不能.我在linux/mac os上找到了安装步骤,但在windows中找不到.有些网站建议在php项目的composer.json文件中添加对phpunit/phpunit的依赖.但是怎么样?我不知道.请帮助我在wampserver(Windows 07-64位操作系统)或任何替代品上使用composer安装PHPUnit.

tdd phpunit

0
推荐指数
1
解决办法
5038
查看次数