Laravel 中间件单元测试

2024-02-28

我正在尝试在 Laravel 中为我的中间件编写单元测试。有谁知道教程,或者有这方面的例子吗?

我已经写了很多代码,但是一定有更好的方法来测试handle方法。


使用 Laravel 5.2,我通过向中间件传递带有输入的请求和带有断言的闭包来对中间件进行单元测试。

所以我有一个中间件class GetCommandFromSlack解析第一个单词text我的帖子中的字段(来自 Slack 斜杠命令的文本)到一个名为的新字段command,然后修改text场不再有第一个词。它有一种具有以下签名的方法:public function handle(\Illuminate\Http\Request $request, Closure $next).

我的测试用例如下所示:

use App\Http\Middleware\GetCommandFromSlack;
use Illuminate\Http\Request;

class CommandsFromSlackTest extends TestCase
{
  public function testShouldKnowLiftCommand()
  {
    $request = new Illuminate\Http\Request();
    $request->replace([
        'text' => 'lift foo bar baz',
    ]);
    $mw = new \App\Http\Middleware\GetCommandFromSlack;
    $mw->handle($request,function($r) use ($after){
      $this->assertEquals('lift',       $r->input('command'));
      $this->assertEquals('foo bar baz',$r->input('text'));
    });
  }
}

我希望这有帮助!如果我得到更复杂的中间件工作,我会尝试更新它。

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

Laravel 中间件单元测试 的相关文章

  • 对于 testunit 或其他 nunit 风格框架来说,什么才是好的失败消息?

    在 Ruby 的 test unit 和其他此类 nunit 风格框架中 什么才是好的失败消息 失败消息是否应该仅仅描述预期值与预期值不匹配的情况 assert match hey hey this is a test The word d
  • 在二进制 R 包中包含测试

    我在用testthat为我的 R 包编写单元测试 我见过一些软件包作者 比如来自Rcpp and ggplot2 使用二进制文件分发单元测试 但是 当我使用 RStudio 0 98 1102 构建包时devtools 1 7 0 test
  • 在单元测试中重复的代码是否更容易被容忍?

    前段时间 当我经历并重构它们以使其更加出色时 我破坏了几个单元测试DRY http en wikipedia org wiki Don 27t repeat yourself 每次测试的目的不再明确 测试的可读性和可维护性之间似乎需要权衡
  • 带有 Spock Stub 的泛型

    我无法为泛型类编译 Spock 存根 构造函数的签名如下 SomeClass SerSup
  • 我可以将模型关联到 laravel 中的通知表吗?

    我一直在处理通知 并且很快就完成了它 除非我觉得需要删除通知并将其与帖子相关联 有什么方法可以将模型与帖子关联起来吗 notifications桌子 我想用 table创建通知模型后在模型中找到的属性 编辑 或者我可以在删除帖子时删除通知吗
  • Amazon S3 上传错误 SSL 证书问题

    我正在尝试在本地主机上测试 Laravel Amazon S3 但不断收到相同的错误 WrappedHttpHandler php 第 192 行中的 S3Exception 执行时出错 列表对象 上 https s3 us west 2
  • Perl:避免从标准输入贪婪读取?

    考虑以下 perl 脚本 read pl my line
  • 如何将 Enzyme Shallow 与 Jest 快照结合使用

    我正在尝试使用shallow https github com airbnb enzyme blob master docs api shallow md from enzyme https github com airbnb enzyme
  • Python 包?

    好吧 我认为无论我做错了什么 它可能都是显而易见的 但我无法弄清楚 我已经阅读并重新阅读了有关包的教程部分 我唯一能想到的是这不起作用 因为我直接执行它 这是目录设置 eulerproject init py euler1 py euler
  • 当 TestCase 包含数组时,NUnit 无法识别该 TestCase

    这是我在 NUnit 中遇到的非常简单但烦人的行为 我有一些这样的测试 Test TestCase 1 2 hello TestCase 3 5 goodbye public void MyClass MyMethod int a int
  • 使用 jest 存根函数

    有没有办法使用 jest API 来存根函数 我习惯于使用 sinon 存根 在这里我可以使用存根为来自我的测试单元的任何函数调用编写单元测试 http sinonjs org releases v1 17 7 stubs http sin
  • 用于测试的嵌入式 H2 数据库的 Spring 配置

    使用 Spring 进行集成测试的配置是什么样的 嵌入式 h2 数据源 http www h2database com html main html以及可选的 JUnit 我第一次尝试单连接数据源 http static springsou
  • c# 模拟 IFormFile CopyToAsync() 方法

    我正在对一个异步函数进行单元测试 该函数将 IFormFile 列表转换为我自己的任意数据库文件类列表 将文件数据转换为字节数组的方法是 internal async Task
  • 设置具有不同输入的测试方法

    我想在 C 中测试所有代码路径的以下方法 public int foo int x if x 1 return 1 if x 2 return 2 else return 0 我见过这个pex单元测试 http fernandomachad
  • Laravel 中如何返回数组而不是集合?

    在 Laravel 中 可以仅选择一个字段并将其作为集合 数组返回 例如考虑模型Foo链接到表foos其中有字段id a b c 考虑以下示例数据 1 10 15 20 1 12 15 27 1 17 15 27 1 25 16 29 1
  • 对自定义 symfony 约束进行单元测试

    这应该非常简单 但今天下午它让我发疯 对自定义 symfony 验证器进行单元测试的正确方法是什么 我能找到的所有文章都与我的做法完全相同 class Foo extends Constraint public string message
  • 将 TypeMoq 模拟与 Angular TestBed 结合使用

    我定义了一个FooService如下 import Injectable from angular core export interface Foo Foo string Injectable export class FooServic
  • Laravel 5.2 如何更新迁移而不丢失数据

    我使用的是 laravel 5 2 我通常会根据项目要求更新数据库 所以我希望在不丢失数据库记录的情况下执行此操作 我的意思不是如何为我的数据库播种 我的意思是当我的数据库处于活动状态并且我想更新它时抛出 laravel 迁移 我正要扔La
  • 将 Foq 与 F# 函数类型结合使用

    例如 我使用 F 类型定义来防止函数之间的硬依赖 type IType1 int gt int type IType2 int gt string let func1 i int int i i let func2 i int string
  • 如何在Android JUnit测试用例中调用Button.performClick?

    我是 Android 测试方面的新手 我想测试单击按钮是否会打开相应的活动 我做了一些研究 发现我需要使用 ActivityManager 来进行检查 问题是 我无法让 点击 部分正常工作 我正在尝试使用Button performClic

随机推荐

  • PHP - 数据库模式:版本控制、分支、迁移

    我正在尝试提出 或找到 一个可重用的系统 用于 php 项目中的数据库模式版本控制 有许多可用于 php 的 Rails 风格的迁移项目 http code google com p mysql php migrations http co
  • HTML5 音频的 ontimeupdate 在 Chrome 中未触发

    我有以下代码 用于创建 html5 音频元素并设置时间更新时的侦听器 音频在所有浏览器中都能正常播放 但 ontimeupdate 函数在 Chrome 中永远不会触发 包括 Android 上的 Chrome var audioEleme
  • 为什么在 Kotlin 中异步设置视图尺寸不起作用?

    这有效 myView layoutParams myView layoutParams apply height 100 但这都不是 使用 android ktx myView doOnLayout myView layoutParams
  • 无法在桌面应用程序背后的代码中绑定网格视图

    我有一个列出所有客户的网格视图 我将它绑定在放置在 MDI 子项中的 Form 的加载时间中 网格视图中的列是在设计时预定义的 我的代码Form Load 事件是 try cn db createConnection if cn State
  • ViewModel 没有零参数构造函数错误 - 即使它有零参数构造函数

    我是 Android 和 Java 新手 正在尝试制作一个基于位置的应用程序 EDIT 我做了一个非常非常简单的测试代码 但得到了同样的错误 这是java package com example viewmodeltest import a
  • 从电子邮件中的链接启动 iPhone 应用程序

    我一直在尝试 iPhone SDK 中的 URL 方案 并且我已经使用自定义 URL 方案 例如 myap Dosomething 来启动我的应用程序 但这对于我想要的东西来说并不实际 是否可以以某种方式注册一个方案 允许电子邮件中的链接
  • 与assert_select相反?

    我正在编写一个应用程序 需要检查视图是否存在not具有某些功能 特别是因为该功能必须仅呈现给特定安全组中的用户 我正在寻找与assert selects相反的内容 以便看到菜单是not呈现 看看这里的文档 http apidock com
  • java优先级队列与链表的比较

    我正在解决BFS问题 我使用了 PriorityQueue 但我得到了错误的答案 然后我使用了LinkedList 我猜对了并且 我无法找到它们之间的区别 这是两个代码 为什么两个答案不同 Code1 LinkedList q new Li
  • 如何创建一个 React Native ios 共享扩展应用程序

    我希望我的反应本机应用程序可以从 Whatsapp Skype 照片共享 我尝试使用反应本机共享扩展 https www npmjs com package react native share extension但它只在 Safari 浏
  • watchOS 2.2 应用程序如何确定其配对的 iPhone 是否已切换到另一台 Apple Watch?

    我正在尝试在我的 iOS 9 3 watchOS 2 2 应用程序中支持与多个手表配对的新功能 它似乎运行良好 只是我无法弄清楚 watchOS 应用程序如何确定配对的 iPhone 是否已切换到另一台 Apple Watch The do
  • 从 NSBundle 获取 nil 路径

    我在项目中创建了一个新文件夹 在其中复制了图像 称为 io jpg 我还检查了构建阶段 gt 复制捆绑资源 文件就在那里 所以我试图获取这张图片的路径 NSBundle bundle NSBundle mainBundle NSString
  • ActiveMQ如何处理关闭的会话

    我正在使用 ActiveMQ 将电子邮件消息排入队列 消费者读取队列并发送电子邮件 在启动时 我注册一个生产者并永久缓存它 PooledConnectionFactory factory new PooledConnectionFactor
  • 词法或处理器问题:未找到 boost/config/user.hpp' 文件

    当我在 Xcode 中运行 React Native 应用程序时 它显示错误 boost config user hpp 文件未找到 而且当我使用命令 react native run ios 运行应用程序时 我在终端中收到错误 Comma
  • gdax-java 作为库的实现

    我正在尝试实现这个API https github com robevansuk gdax java https github com robevansuk gdax java以便能够通过 Coinbase 创建订单 提取资金和存入资金并在
  • 在ANDROID中打开一个activity而不在manifest文件中声明它?

    我想打开一个活动而不在清单文件中声明它 我不知道这是否可能 我真正想要的是使用意图从我的程序中动态打开一个活动 如果可能的话 任何人都可以帮助我吗 不可能 虽然我不确定你的意思是 动态打开活动 See http developer andr
  • 覆盖 FOSUserBundle 路由 Symfony2

    我想覆盖 FOSUserBundle 的一些路由 MyBundle Resources config routing security yml fos user security login path locale login defaul
  • Spyder 内部问题,如何解决?

    我对编码完全陌生 但是 当我尝试运行如图所示的一些代码时 出现了这个问题 我尝试重新安装但不起作用 Spyder 维护者在这里 带来不便敬请谅解 这是 Anaconda 中的一个错误 我们已经向他们报告了该错误 但尚未修复 如果您只需要使用
  • 将 SVG 元素添加到 html 文件中?

    我想将一些 SVG 元素添加到 html 文件中 我发现链接说不支持此功能 文档类型必须是 xhtml 但我正在使用一些带有 html 的 javascript 库 这些库允许我在其中使用 SVG Raphael SVG Web 等 那么有
  • 在开发过程中禁用浏览器缓存 css 和 js 文件

    如何在应用程序开发过程中禁用浏览器缓存 以便每当我们对本地主机 或任何开发环境 中的 css 或 js 文件进行任何更改时 我们都不必在浏览器上进行硬刷新才能看到更改 对所有 css 和 js 都尝试这个 这个例子你应该在所有css和js中
  • Laravel 中间件单元测试

    我正在尝试在 Laravel 中为我的中间件编写单元测试 有谁知道教程 或者有这方面的例子吗 我已经写了很多代码 但是一定有更好的方法来测试handle方法 使用 Laravel 5 2 我通过向中间件传递带有输入的请求和带有断言的闭包来对