独立 Symfony2 包内的功能测试

2024-05-05

我需要直接在独立包中进行一些功能测试。我不想测试控制器,只是测试真实服务之间的一些交互。

我想知道是否有标准/最佳方法可以做到这一点。我用一种方法做到了,但想知道是否有更好的方法。


这是我自己的解决方案(我总结了在独立包中测试的所有过程):

1. 首先,好的捆绑包有自己的特色composer.json定义其依赖项:

{
    "name": "my/own-bundle",
    "type": "symfony-bundle",
    "description": "Symfony2 bundle that provides ...",
    "keywords": ["my","own"],
    "license": "MIT",
    "authors": [
        {
            "name": "John Doe",
            "email": "[email protected] /cdn-cgi/l/email-protection"
        }
    ],
    "require": {
        "php": ">=5.3.2",
        "symfony/framework-bundle": ">=2.3"
    },
    "require-dev": {
        "phpunit/phpunit": "3.7.*"
    },
    "autoload": {
        "psr-0": { "My\\OwnBundle": "" }
    },
    "target-dir": "My/OwnBundle",
    "minimum-stability": "dev"
}

请注意依赖项的使用symfony/framework-bundle这是我们对服务进行测试所需要的。您当然可以在指定您自己对 symfony 核心的实际依赖项时降低依赖项。

有了这个文件,我可以处理命令(执行)来构建我的包的供应商目录:

$ composer update

2.然后,我设置我的 phpunit 配置文件:

<!-- phpunit.xml.dist -->

<?xml version="1.0" encoding="UTF-8"?>

<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false"
         syntaxCheck="false"
         bootstrap="Tests/bootstrap.php"
>
    <testsuites>
        <testsuite name="MyOwnBundle Test Suite">
            <directory>./Tests/</directory>
        </testsuite>
    </testsuites>

    <filter>
        <whitelist>
            <directory>./</directory>
            <exclude>
                <directory>./Resources</directory>
                <directory>./Tests</directory>
                <directory>./vendor</directory>
            </exclude>
        </whitelist>
    </filter>
</phpunit>

3. 然后,我在测试目录中设置 php bootstrap 以自动加载该类:

// Tests/bootstrap.php

$file = __DIR__.'/../vendor/autoload.php';
if (!file_exists($file))
{
    $file = __DIR__.'/../../../../../../vendor/autoload.php';
    if (!file_exists($file))
        throw new RuntimeException('Install dependencies to run test suite.');
}

$autoload = require_once $file;

这些步骤是独立捆绑包中任何测试的标准步骤。

4. 现在,我想模拟一个应用程序来对我的服务进行一些功能测试:

我需要一个内核类:

// Tests/AppKernel.php (you can define it in a subdirectory /Fixtures if you prefer)

use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array();

        if (in_array($this->getEnvironment(), array('test'))) {
            $bundles[] = new Symfony\Bundle\FrameworkBundle\FrameworkBundle();
            $bundles[] = new My\OwnBundle\MyOwnBundle();
        }

        return $bundles;
    }

    public function registerContainerConfiguration(LoaderInterface $loader)
    {
        $loader->load(__DIR__.'/config.yml');
    }
}

以及相应的config.yml:

# Tests/config.yml

framework:
    secret: test
    session:
        storage_id: session.storage.mock_file

my_own:
    test: 2

这是一个带有会话模拟的示例。如果您想访问某些服务,请不要忘记指定正确的框架配置节点(如果您不指定节点session,你没有服务session例如)。

5. 最后,我可以在我的测试类中检索我的服务,如下所示:

// Tests/Functional/Handling/Handler.php

namespace My\OwnBundle\Tests\Functional\Handling;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class HandlerTest extends WebTestCase
{
    private $handler;

    protected function setUp()
    {
        require_once __DIR__.'/../../AppKernel.php';

        $kernel = new \AppKernel('test', true);
        $kernel->boot();
        $container = $kernel->getContainer();
        $this->handler = $container->get('my_own.handling.handler');
    }

    public function testHandle()
    {
        $this->assert($this->handler->handle());
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

独立 Symfony2 包内的功能测试 的相关文章

  • 无法启动 Windows 服务,错误 1064

    我编写了一个在 Win10 上运行的 Windows 服务 它运行得非常好 直到我决定对其进行一些更改 我重写了一些逻辑 在调试和发布配置中进行了测试 一切都很好 然后 我使用卸载了当前版本的服务installutil exe u serv
  • 尝试创建发布包时无法解析模块“AccessibilityInfo”

    我在跑步 react native bundle platform windows dev false entry file index windows js bundle output windows app ReactAssets in
  • 使用 WebServiceContext 测试 @Webservice EJB(使用 OpenEJB?)

    我有一些 EJB 作为 JAX WS Web 服务 WebService Stateless Remote MobileFacade class public class MobileFacadeBean implements Mobile
  • Django:测试客户端的上下文在 shell 中为空

    我无法访问context的属性HttpResponse来自 ipython 的对象 但单元测试访问context 这是单元测试 测试运行正常通过 from django test import Client TestCase from dj
  • 在哪里可以获得有关 Java FitNesse 和 Slim 的一些教程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 发送变量后的 wsdl 服务响应,php

    我是 SOAP WSDL 函数的新手 我有一位客户从一家从事汽车测试的公司获得了 wsdl 文件 我的客户是他们的分包商 他们告诉我们上传有关车牌 类别等信息 一旦详细信息发送完毕 服务器就会做出成功或失败的响应 请您协助 浏览不同的信息
  • Symfony2 - 将 Swiftmailer 添加为服务

    我想将我的电子邮件代码从我的控制器移至服务中 到目前为止我已完成以下操作 在 services yml 中创建条目 在 acme demobundle services EmailManager php 中创建了一个 EmailManage
  • 如何测试 JUnit 测试的 Comparator?

    我需要测试 Compare 方法 但我对如何测试感到困惑 我可以看看该怎么做吗 public class MemberComparator implements Comparator
  • maven-bundle-plugin 的输出目录

    我有这个生成 osgi 包的 POM 文件
  • 用户区域设置在第一次请求时不起作用

    我的网站运行的是 Symfony 主版本 到目前为止 我能够使用本地监听器逻辑 http symfony com doc master cookbook session locale sticky session html来自网站 由于代码
  • 如何在 e2e AngularJS 测试中进行文件上传?

    在我的一种观点中 我有一个文件上传控件 它支持通过拖放或单击按钮后打开的标准文件对话框上传文件 How to do this in my e2e tests1 1 Just one of the two options will be en
  • C++ GUI 桌面 Windows 应用程序的测试自动化工具/库/框架

    不幸的是 我有一个在 Windows 上运行的 GUI 桌面应用程序 并使用 Borland C 编译器进行编译 我知道这是一项非常古老的技术 但这就是生活 我工作的公司有很多免费的 QTP 许可证 但说实话 我不喜欢这个工具 我想用一些开
  • Symfony2 捕获会话超时

    我有一个关于 Symfony2 的问题 希望有人能帮助我 Symfony 在哪里检查用户会话以及没有会话时该怎么办 就像重定向到登录页面一样 我发现了一些类似的问题 但不是我的意思 我为什么想知道它 如果有会话超时 我想检查调用是否是 Xm
  • Protractor:是否可以测试我的应用程序中没有404?

    我是量角器的新手 我想编写一个测试来查看是否存在带有 url 的锚点给出 404 错误 我见过这个如何用量角器测试html链接 https stackoverflow com questions 29212375 how to test h
  • Capistrano 3 部署无法连接到 GitHub - 权限被拒绝(公钥)

    我使用 Capistrano v3 和 capistrano symfony gem 设置了以下部署脚本 我正在使用 Ubuntu 14 4 部署到 AWS EC2 实例 我正在连接从 AWS 下载的 pem 文件 我的deploy rb中
  • 在复杂的文件夹结构中进行测试

    我正在 golang 中构建一个设计模式存储库 为了运行所有测试 我使用这个 bash 脚本 有用 bin bash go test creational abstract factory go go test creational bui
  • 更改 TFS 构建代理的身份

    我们有一个运行集成测试的 TFS 构建代理 其中一些测试会调用 Internet 上的 Web 服务 我们的网络使用代理与互联网通信 由于构建代理在网络服务上的身份下运行 并且网络服务的设置未配置为使用代理 因此测试失败 我该如何执行以下操
  • 测试随机值 - 对这种方法的想法?

    好的 我一直在研究随机图像选择器和队列系统 因此您不会经常看到相同的图像 一切都很顺利 就我蹩脚的代码而言 until我到了随机位 我想测试一下 但是如何测试呢 没有Debug Assert i IsRandom 可悲的是 D 所以 我在用
  • 如何为 symfony2 网站启用 gzip 压缩?

    我正在使用 servergrove 进行网站托管 但他们确实缺乏可以帮助我的员工 如何为 symfony2 站点设置 gzip 压缩 如果可能的话 以一种防白痴的方式 因为我对Linux一无所知 我将以下内容添加到 web 文件夹中的 ht
  • 为 REST API 编写单元测试的最佳方法是什么?

    在为 API 包装器编写单元测试时 我应该对 REST API 端点进行真正的调用 还是应该使用 mocl 响应来模拟成功和错误的调用 单元测试意味着只测试你的unit API 包装器 仅此而已 因此 不幸的是 您应该模拟整个 API 另一

随机推荐

  • 在另一个数组的每隔一个元素之后插入一个数组中的元素(一次一个)(不均匀拉链)

    合并两个数组的优雅方法是什么 使得生成的数组具有第一个数组中的两个项目 后跟第二个数组中的单个项目 以这种方式重复 array1 A1 A2 A3 A4 A5 potentially longer array2 B1 B2 B3 B4 B5
  • Django - 在启动时执行代码

    我正在使用 Django 1 9 3 我有一个包含多个应用程序的项目 我想在项目启动时更新其中一个应用程序的表 用例 例如 假设我想在我的网站上销售商品 我有一个包含模型项目的应用程序 我在 Django 之外有一个网络服务 它提供服务 g
  • 使用 WebListener 或 OWIN 作为 Azure Service Fabric 的 API 网关

    我们在服务结构中有 4 个无状态服务微服务 它们使用 Kestrel 作为服务器 我们需要向前端公开这 4 个服务 并且对使用 WebListener 还是 OWIN 作为服务器有疑问 任何人都可以告诉谁对性能更好 我们还有用于处理令牌的身
  • cytoscape.js。对于边缘线段,将坐标转换为线段距离和线段权重

    我想与社区分享一个有用的函数 该函数从坐标 PointX PointY 返回线段距离和线段权重 我从工具 例如draw io 创建图表 并且在使用多个路点制作边缘 线段样式 时 该免费软件通过其坐标提供路点 不幸的是 最新版本的 cytos
  • 如何检测文本文件中大于 n 的一系列“空洞”(孔、与模式不匹配的线)?

    Case scenario cat Status txt 1 connected 2 connected 3 connected 4 connected 5 connected 6 connected 7 disconnected 8 di
  • 类型错误: jasmine.getEnv().currentSpec 为 null

    当我尝试运行我的茉莉花规格时 我得到 TypeError jasmine getEnv currentSpec is null in http localhost 8888 JASMINE ROOT jasmine js line 498
  • 我在 wamp for PHP 路径中遇到错误

    我的 wamp 服务器图标当前为橙色 这意味着 3 个服务器中只有 2 个正在运行 我无法打开 phpmyadmin 页面 因为它给出 404 未找到错误 如果我右键单击底部的 wamp 图标 则会收到一条错误消息 Error C wamp
  • 学院/大学数据 API [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试构建一个应用程序 允许用户查找特定大学并查看有关该大学的数据 录取率 SAT 分数 规模等 但
  • Python 用 lambda 函数封闭作用域变量

    我写了这个简单的代码 def makelist L for i in range 5 L append lambda x i x return L 好的 现在我打电话 mylist makelist 因为稍后调用嵌套函数时会查找封闭范围变量
  • 如何找到我的 typescript/react 模块的声明?

    我对前端技术非常 非常 陌生 特别是 React 和 TypeScript 当尝试做一件简单的事情 即使用反应组件时 我的问题出现了https github com ckeditor ckeditor5 https github com c
  • Yacc/Bison:伪变量($$、$1、$2、..)以及如何使用 printf 打印它们

    我有一个用 flex 编写的词法分析器 它将标记传递给用 bison 编写的解析器 以下是我的词法分析器的一小部分 ID a z a z0 9 rule printf A rule s n yytext return RULE ID pri
  • 使用 neo4j 建模有序树

    我刚刚开始使用 neo4j 并且了解图形和关系的原理 但是我在想要建模的某些结构方面遇到了一些麻烦 我想在编程语言项目中使用它 并存储已解析源文件的 AST 从那里 我计划向节点添加大量额外的数据和关系 以帮助分析和工具 但基本的 AST
  • 将箱线图与 Wilcoxon 检验进行比较

    我正在使用 R 中的 ggplot2 包比较两组长度 不同的个体 和箱线图 我想比较这两个分布 但到目前为止我发现使用 wilcoxon 测试的唯一方法是 ggpubr 包中的 stat compare means 这是比较分布的正确方法吗
  • 汇编基础知识:输出寄存器值

    我刚刚开始学习汇编语言 我已经陷入了 在屏幕上显示存储在寄存器中的十进制值 的部分 我使用 emu8086 任何帮助将不胜感激 model small Specifies the memory model used for program
  • Python:从 apache authnz_ldap 获取用户

    我正在通过 Apache2 的 authnz ldap 模块成功验证 ldap 用户 我不清楚如何在他们登录后获取他们的用户名 以便我可以通过任何以下表单 网页与他们交互 我尝试过典型的方法 os getenv os environ get
  • Rvest 从 select 中提取选项值和文本

    Rvest 选择选项 我认为用可重现的示例来解释是最简单的 网站 http www verema com vinos portada http www verema com vinos portada我想获取葡萄酒的类型 Tipos de
  • Mac OS X 上的 Python 框架和非框架构建之间的差异

    Question Mac OS X 上的 Python 框架构建和非框架构建 即标准 UNIX 构建 之间有什么区别 另外 各自的优点和缺点是什么 初步研究 以下是我在发布此问题之前找到的信息 Pythonmac SIG Why is Fr
  • Typescript / Angular 2:类型中缺少属性

    我对 Typescript 还很陌生 并且很难理解界面 据我了解 接口是类型描述或类的契约 它允许我定义类可以具有哪些属性以及它们的类型 我尝试实现这一点 但总是收到此错误 error TS2420 Class ResultPage inc
  • XPath 节点到字符串

    如何选择以下节点的字符串内容 span class url word b class test b span span class url word b class test2 b more words span 我尝试过一些事情 span
  • 独立 Symfony2 包内的功能测试

    我需要直接在独立包中进行一些功能测试 我不想测试控制器 只是测试真实服务之间的一些交互 我想知道是否有标准 最佳方法可以做到这一点 我用一种方法做到了 但想知道是否有更好的方法 这是我自己的解决方案 我总结了在独立包中测试的所有过程 1 首