返回顶部
首页 > 资讯 > 精选 >仅使用公共 api 对 alexedwards/scs 进行简单测试
  • 515
分享到

仅使用公共 api 对 alexedwards/scs 进行简单测试

2024-02-09 13:02:59 515人浏览 薄情痞子
摘要

PHP小编香蕉本文将介绍如何使用公共 api 对 Alex Edwards/SCS 进行简单测试。Alex Edwards/SCS 是一个用于会话管理的 php 库,可以轻松地在应用程

PHP小编香蕉本文将介绍如何使用公共 api 对 Alex Edwards/SCS 进行简单测试。Alex Edwards/SCS 是一个用于会话管理的 php 库,可以轻松地在应用程序中管理用户会话。通过使用公共 API 进行测试,我们可以验证库的功能和性能,并确保其在实际应用中的稳定性和可靠性。在本文中,我们将逐步指导您如何进行简单的测试,并展示测试结果的分析和解释。让我们开始吧!

问题内容

此问题是此问题的后续问题。我想要对 https://pkg.Go.dev/GitHub.com/alexedwards/scs/[email protected] 进行简单测试以进行验证我想使用的功能。基本上,我只想将一些数据放入会话中,将其取出,并验证其是否相同。像这样的东西:

func testscs_setgetissame1(t *testing.t) {
    sessionmanager := scs.new()
    req := Httptest.newrequest("get", "/", nil)
    key := "boolean"
    expected := false
    sessionmanager.put(req.context(), key, expected)
    actual := sessionmanager.getbool(req.context(), key)
    assert.equal(t, expected, actual)
}

这会产生恐慌:scs:上下文中没有会话数据。

我尝试从httptest包复制示例,但httptest.server没有实现http.handler(缺少servehttp方法)。

func TestScs_SetGetIsSame2(t *testing.T) {
    sessionManager := scs.New()

    ts := httptest.NewServer((http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintln(w, "Hello, client")
        expected := true
        sessionManager.Put(r.Context(), "key", expected)
        actual := sessionManager.GetBool(r.Context(), "key")
        assert.Equal(t, expected, actual)
    })))
    defer ts.Close()

    res, err := http.Get(ts.URL)
    if err != nil {
        log.Fatal(err)
    }

    greeting, err := io.ReadAll(res.Body)
    res.Body.Close()
    if err != nil {
        log.Fatal(err)
    }

    fmt.Printf("%s", greeting)

    sessionManager.LoadAndSave(ts)
}

我还查看了 alexedwards/scs 存储库中的测试,但它们使用私有函数 addsessiondatatocontext。

在 go 中测试会话的最佳、最简单的方法是什么?

解决方法

我在你的代码中看到

ts := httptest.newserver(http.handlerfunc(func(w http.responsewriter, r *http.request) {
    // ...
}))

sessionmanager.loadandsave(ts) // this line is incorrect

您正在尝试将测试服务器 (ts) 传递给 sessionmanager.loadandsave。这将不起作用,因为 sessionmanager.loadandsave 需要 http.handler,并且 ts 的类型为 *httptest.server,而不是 http.handler

相反,您应该将实际的处理程序传递给 sessionmanager。在创建测试服务器之前加载并保存

为此,您可以使用 sessionmanager.loadandsave 包装实际的处理函数(它确实返回 http.handler),然后再将其传递给 httptest.newserver

handler := sessionmanager.loadandsave(http.handlerfunc(func(w http.responsewriter, r *http.request) {
    // ... logic here ...
}))

ts := httptest.newserver(handler)

通过使用 sessionmanager.loadandsave 中间件包装实际的处理程序函数来创建一个新的处理程序。然后将这个包装的处理程序传递给 httptest.newserver

如果你把它们放在一起:

package main

import (
    "fmt"
    "github.com/alexedwards/scs/v2"
    "github.com/stretchr/testify/assert"
    "io"
    "log"
    "net/http"
    "net/http/httptest"
    "testing"
)

func TestScs_SetGetIsSame2(t *testing.T) {
    sessionManager := scs.New()

    // Create a handler and wrap it using sessionManager.LoadAndSave
    handler := sessionManager.LoadAndSave(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintln(w, "Hello, client")
        expected := true
        sessionManager.Put(r.Context(), "key", expected)
        actual := sessionManager.GetBool(r.Context(), "key")
        assert.Equal(t, expected, actual)
    }))

    // Create a test server with the handler
    ts := httptest.NewServer(handler)
    defer ts.Close()

    // Make a request to the server
    res, err := http.Get(ts.URL)
    if err != nil {
        log.Fatal(err)
    }

    // Read the response body
    greeting, err := io.ReadAll(res.Body)
    res.Body.Close()
    if err != nil {
        log.Fatal(err)
    }

    // Print the response body
    fmt.Printf("%s", greeting)
}

以上就是仅使用公共 api 对 alexedwards/scs 进行简单测试的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 仅使用公共 api 对 alexedwards/scs 进行简单测试

本文链接: https://www.lsjlt.com/news/562524.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 仅使用公共 api 对 alexedwards/scs 进行简单测试
    php小编香蕉本文将介绍如何使用公共 API 对 Alex Edwards/SCS 进行简单测试。Alex Edwards/SCS 是一个用于会话管理的 PHP 库,可以轻松地在应用程...
    99+
    2024-02-09
  • 在SpringBoot中怎么对restful api进行单元测试
    在SpringBoot中怎么对restful api进行单元测试?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.添加Springboot测试注解@RunWith(Spring...
    99+
    2023-05-31
    restful api springboot
  • 使用Junit对Android应用进行单元测试
      在本文中,你将会学习到如何在Eclipse中创建Android JUnit的单元测试工程以及在不同的条件下创建及运行自动测试用例。   准备工作   本文假设读...
    99+
    2022-06-06
    单元 junit 单元测试 测试 Android
  • 如何使用单元测试框架对 Golang 函数进行测试?
    go 中使用单元测试框架进行单元测试:导入 testing 包。编写以 test 为前缀的单元测试函数。使用断言函数(如 assertequal())验证测试结果。运行单元测试(go t...
    99+
    2024-04-16
    golang 单元测试 标准库
  • 使用sysbench对MySQL进行测试
    因sysbench版本更新问题,某些命令选项发生改变,查询help进行酌情更改。 https://yq.aliyun.com/articles/66651spm=5176.100239.blogcont6...
    99+
    2024-04-02
  • 使用ab工具对服务器进行API压力测试
    目录1 系统吞吐量的简单介绍2 测试方法2.1 客户端测试工具2.1.1 GET方法2.1.2 POST方法2.1.3 测试结果解读2.2服务器端检测方法3 实际测试3.1 shell脚本3.2 C++提取程序:使用了l...
    99+
    2022-06-04
    ab工具进行服务器压力测试 服务器压力测试
  • C#使用MSTest进行单元测试
    我之前写过一篇XUNit的简介:使用Xunit来进行单元测试。Xunit在当时确实是一个最简单易用的测试框架,然而,随着发展,Xunit也变得复杂了不少,光写一个最简单的测试就要导入...
    99+
    2024-04-02
  • 利用 httptest 对 http 请求进行重试单元测试
    哈喽!大家好,很高兴又见面了,我是编程网的一名作者,今天由我给大家带来一篇《利用 httptest 对 http 请求进行重试单元测试》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关...
    99+
    2024-04-04
  • Android中使用Junit进行单元测试
      不管我们在学习还是在开发的时候,都会用到测试,在Android中进行的Junit单元工具测试需要创建一个类去继承于AndroidTestCase类,同时还需要在主配置文...
    99+
    2022-06-06
    单元 junit 单元测试 测试 Android
  • 如何使用 PHP 进行单元测试?
    单元测试检查软件的最小构成部分(如函数、方法),php 可通过 phpunit 框架进行单元测试。首先安装 phpunit,然后创建测试类(扩展自 testcase),再编写以 "tes...
    99+
    2024-04-19
    php 单元测试 composer
  • 使用 Go 泛型进行单元测试
    使用 go 泛型进行单元测试,可以创建适用于多种类型的通用测试函数,提高测试代码的可重用性、可维护性和可读性。具体优势包括:可重用性:泛型测试函数适用于多种类型,减少重复代码。可维护性:...
    99+
    2024-05-03
    单元测试 泛型 代码可读性
  • 如何使用Spring-Test对Spring框架进行单元测试
    目录Spring-Test对Spring框架进行单元测试加载依赖编写SpringTestBase基础类,加载所需xml文件编写单元测试类 示例Spring-Test测试数据1、新建一...
    99+
    2024-04-02
  • 如何Spring Boot中使用MockMvc对象进行单元测试
    这期内容当中小编将会给大家带来有关如何Spring Boot中使用MockMvc对象进行单元测试,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Spring测试框架提供MockMvc对象,可以在不需要客户端...
    99+
    2023-05-31
    springboot mockmvc
  • 如何使用ab工具对服务器进行API压力测试
    本篇文章为大家展示了如何使用ab工具对服务器进行API压力测试,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1 系统吞吐量的简单介绍一个系统的吞度量(承压能力)与request对CPU的消耗、外部接...
    99+
    2023-06-22
  • .Net使用Xunit工具进行单元测试
    不管你爱与不爱,单元测试对于一个软件的长治久安还是必不可少的一环。在Visual Studio 2012后,VS中的测试浏览器也能与第三方的集成了,用起来还是非常方便的。目前在.Ne...
    99+
    2024-04-02
  • C#怎么使用MSTest进行单元测试
    今天小编给大家分享一下C#怎么使用MSTest进行单元测试的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。目前MS发布了两个版...
    99+
    2023-07-02
  • 使用Spring Boot进行单元测试详情
    目录前言使用 Spring Boot 进行测试系列文章依赖项不要在单元测试中使用Spring创建一个可测试的类实例属性注入是不好的提供一个构造函数减少模板代码使用Mockito来模拟...
    99+
    2024-04-02
  • Android中如何使用JUnit进行单元测试
      在我们日常开发android app的时候,需要不断地进行测试,所以使用JUnit测试框架显得格外重要,学会JUnit可以加快应用的开发周期。   Android中建...
    99+
    2022-06-06
    单元 junit 单元测试 测试 Android
  • ASP.NET Core项目使用xUnit进行单元测试
    目录一、前言二、创建示例项目1、UnitTest.Model2、UnitTest.Data3、UnitTest.IRepository4、UnitTest.Repository5、U...
    99+
    2024-04-02
  • 如何使用MockMvc进行controller层单元测试
    这篇文章主要介绍了如何使用MockMvc进行controller层单元测试,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。看代码吧~package com.ieou....
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作