首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏7DGroup

    (翻译)测试替身— Fakes, Mocks 和 Stubs

    原文:https://blog.pragmatists.com/test-doubles-fakes-mocks-and-stubs-1a7491dfa3da 一、前言 自动化测试中,我们常会使用一些经过简化的 正如我们上文中介绍的,我们可以使用 Stubs 来替换提供实际成绩值的函数,从而简化了整个测试用例的编写。 不过除了 Query 之外还有另一个类别的方法,被称作 Command。 深入阅读: Test Double - Martin Fowler Test Double - xUnit Patterns Mocks Aren't Stubs - Martin Fowler Command

    1.6K30发布于 2021-07-14
  • 来自专栏Golang语言社区

    GoStub框架使用指南

    := Stub(&num, 150) defer stubs.Reset() stubs是GoStub框架的函数接口Stub返回的对象,该对象有Reset操作,即将全局变量的值恢复为原值。 return "xxx-vethName100-yyy", nil }) defer stubs.Reset() 其实GoStub框架专门提供了StubFunc函数用于函数打桩,我们重构打桩代码: stubs ), nil) defer stubs.Reset() 序列化失败时的打桩代码为: stubs := StubFunc(&adapter.Marshal, nil, ErrAny) defer stubs.Reset () stubs.Sm1 ... stubs.SmN 不推荐将打桩代码写成下面的形式: stubs := Sf defer stubs.Sm1.(...).SmN.Reset() TestFuncDemo ", func() { stubs := Stub(&num, 150) defer stubs.Reset() stubs.StubFunc

    4.4K92发布于 2018-03-28
  • 来自专栏golang算法架构leetcode技术php

    gostub源码分析

    () 其实GoStub框架专门提供了StubFunc函数用于函数打桩 stubs := StubFunc(&Exec,"xxx-vethName100-yyy", nil) defer stubs.Reset 核心的数据如下,存储了最初的原始变量,便于在stub结束后数据的恢复,用stubs 变量存储了被替换的变量和替换后变量的映射。 type Stubs struct { // stubs is a map from the variable pointer (being stubbed) to the original value := reflect.ValueOf(stubVal) if _, ok := s.stubs[v]; ! ) return s } 恢复最初定义变量或者函数 func (s *Stubs) Reset() { for v, originalVal := range s.stubs { v.Elem

    36010编辑于 2022-08-02
  • 来自专栏Golang语言社区

    GoStub框架二次开发实践

    对于方法接口的声明如下所示: func (s *Stubs) StubFuncSeq(funcVarToStub interface{}, outputs []Output) *Stubs 但还存在下面两种情况 := StubFuncSeq(&db.ReadLeaf, outputs) defer stubs.Reset() ... { return New().StubFuncSeq(funcVarToStub, outputs) } 提供函数接口的目的是,在Stubs对象生成之前就可以使用该接口。 方法接口实现 我们回顾一下方法接口的声明: func (s *Stubs) StubFuncSeq(funcVarToStub interface{}, outputs []Output) *Stubs 我们重构一下代码: stubs.StubFunc(&resource.Clear, nil) ... 很明显,重构后的代码简单了很多。

    1.3K110发布于 2018-03-28
  • 来自专栏清晨我上码

    第十七节 SCC消费驱动测试-消费端

    webEnvironment= SpringBootTest.WebEnvironment.NONE) @AutoConfigureStubRunner(ids = {"org.xzg:scc-pruducer:+:stubs fraudCheckStatus\":\"FRAUD\",\"rejection.reason\":\"Amount too high\"}"); } } 4 .执行查看结果 注意事项 如果报错No stubs port: 8880 logging.level.org.springframework.cloud.contract: debug #stubrunner: # repository-root: stubs :classpath:/stubs/ # ids: my:stubs # stubs-mode: remote #kafka: # initializer: # enabled: true Group and Artifact IDs // trigger.trigger('org.springframework.cloud.contract.verifier.stubs

    61010发布于 2021-06-01
  • 来自专栏代码工具

    golang测试框架gostub的使用

    assert.New(t)num := 10f := Calculatey1 := f(num)assert.Equal(y1, 9)// 变量stubstubs := Stub(&num, 150)defer stubs.Reset ()y2 := f(num)assert.Equal(y2, 149)// 函数stub1defer stubs.Stub(&f, func(x int) int {return x + 1}).Reset ()assert.Equal(f(num), 151)// 函数stub2defer stubs.StubFunc(&f, 120).Reset()assert.Equal(f(num), 120)// 没有返回值的函数称之为过程,stub可以为过程打桩clean := CloseUserCachedefer stubs.Stub(&clean, func(s string) {fmt.Println

    2.5K20编辑于 2022-06-30
  • 来自专栏智能合约

    phpstorm识别Phalcon语法及提示

    修改gen-stubs.php 将 ide/gen-stubs.php 文件中的如下三行代码注释掉: //if (! CPHALCON_DIR)) { // throw new Exception("CPHALCON directory does not exist"); //} 然后执行如下命令: php gen-stubs.php 在弹出的操作框中,选择到刚才phalcon-devtools的解压目录里生成的语法文件目录, 然后双击选中“/ide/Phalcon版本目录/Phalcon/”目录,点击“应用”和“确定”即可(本图中的 stubs

    2.2K80发布于 2018-06-25
  • 来自专栏joealzhou

    [今日头条]iOS 包大小二进制优化,一行代码减少 60 MB 下载大小

    textcoal_nt,__BD_TEXT,__text,-rename_section,__TEXT,__StaticInit,__BD_TEXT,__text,-rename_section,__TEXT,__stubs ,__BD_TEXT,__stubs,-rename_section,__TEXT,__picsymbolstub4,__BD_TEXT,__picsymbolstub4,-segprot,__BD_TEXT BD_TEXT,__text -Wl,-rename_section,__TEXT,__StaticInit,__BD_TEXT,__text -Wl,-rename_section,__TEXT,__stubs ,__BD_TEXT,__stubs -Wl,-rename_section,__TEXT,__picsymbolstub4,__BD_TEXT,__picsymbolstub4, -Wl,-segprot ,__BD_TEXT,__stubs,-segprot,__BD_TEXT,rx,rx,-rename_section,__TEXT,__picsymbolstub4,__BD_TEXT,__picsymbolstub4

    1.5K30发布于 2021-02-05
  • 来自专栏linux驱动个人学习

    Linux系统调用过程

    PC指针会到相应的中断向量表中取指,中断向量表在内核代码中:arch/arm/kernel/entry-armv.S  中定义 .LCvswi:  .word vector_swi  .globl __stubs_end __stubs_end:  .equ stubs_offset, __vectors_start + 0x200 - __stubs_start  .globl __vectors_start __vectors_start :  ARM( swi SYS_ERROR0 )  THUMB( svc #0  )  THUMB( nop   )  W(b) vector_und + stubs_offset  W(ldr) pc , .LCvswi + stubs_offset  #响应中断后pc指向这里  W(b) vector_pabt + stubs_offset  W(b) vector_dabt + stubs_offset  W(b) vector_addrexcptn + stubs_offset  W(b) vector_irq + stubs_offset  W(b) vector_fiq + stubs_offset

    5.5K70发布于 2018-03-07
  • 来自专栏全栈程序员必看

    Ubuntu 12.04下SimpleScalar_PISA 的安装

    3.再次执行“makeLANGUAGES…”后,提示缺少文件stubs-32.h $ apt-file update $ apt-file search stubs-32.h libc6-dev:/usr /include/i386-linux-gnu/gnu/stubs-32.h 新版的ubuntu更改了stubs-32.h的存放位置。 可执行 $ sudo cp/usr/include/i386-linux-gnu/gnu/stubs-32.h /usr/include/gnu/stubs-32.h 4.再次执行“makeLANGUAGES

    1.7K20编辑于 2022-09-06
  • 来自专栏半行代码

    Android编译解析-Kapt

    apply plugin: 'kotlin-kapt' // 依赖 kat 'xx.xx:xxx' 在编译过程中编译任务会变成下面这样: kapt 分成两部 generateStubs 生成 stubs Java文件存在module/build/tmp/kapt3/stubs/这个目录里面。 这个 Task 继承自 org.jetbrains.kotlin.gradle.tasks.KotlinCompiler, 说明生成 stubs 的流程其实是遵循了 Kotlin编译的过程的。 但是kapt生成stubs文件的流程在增量编译的时候就不是那么可控了,和 kotlin 编译一样,会有各种case让增量失效。那么全量重新生成一遍 stubs 文件那编译速度就有点慢了。

    2.3K20编辑于 2022-05-10
  • 来自专栏韦东山嵌入式

    Linux系统驱动之异常向量表的安装与调用

    .; __stubs_start = .; .stubs ADDR(.vectors) + 0x1000 : AT(__stubs_start) { *(.stubs) } 在代码里搜.vectors

    1K20编辑于 2021-12-08
  • 来自专栏Linux驱动

    5.分析内核中断运行过程,以及中断3大结构体:irq_desc、irq_chip、irqaction(详解)

    , __stubs_end - __stubs_start); memcpy((void *)vectors + 0x1000 - kuser_sz, __kuser_helper_start, kuser_sz //undefine未定义指令异常 ldr pc, .LCvswi + stubs_offset //swi软件中断异常 b vector_pabt + stubs_offset //指令预取中止abort b vector_dabt + stubs_offset //数据访问中止abort b vector_addrexcptn + stubs_offset //没有用到 b vector_irq + stubs_offset //irq异常 b vector_fiq + stubs_offset

    1.9K80发布于 2018-01-03
  • 来自专栏waki

    kubebuilder怎么开始

    runtime/internal/sys/arch.go:54:7: other declaration of StackAlign /usr/local/go/src/runtime/internal/sys/stubs.go runtime/internal/sys/arch.go:24:7: other declaration of PtrSize /usr/local/go/src/runtime/internal/sys/stubs.go :10:24: undefined: Uintreg /usr/local/go/src/runtime/internal/sys/stubs.go:16:7: StackGuardMultiplier runtime/internal/sys/arch.go:24:7: other declaration of PtrSize /usr/local/go/src/runtime/internal/sys/stubs.go :10:24: undefined: Uintreg /usr/local/go/src/runtime/internal/sys/stubs.go:16:7: StackGuardMultiplier

    69710编辑于 2023-10-17
  • 来自专栏新码农博客

    PyQt5:常见错误整理

    解决方法 pip uninstall pyqt5 PyQt5-stubs pyqt5-tools pip install pyqt5==5.13.0 PyQt5-stubs==5.13.0.1 pyqt5

    66720发布于 2020-04-17
  • 来自专栏IT码农

    Laravel5.2之Artisan命令生成自定义模板

    在resources/stubs新建两个模板文件,以下是个人经常需要的两个模板文件(你可以自定义): // resources/stubs/Repository/repository_interface.stub Collection|static[] */ public function findBy($field, $value, $columns = array('*')); } // resources/stubs this->model = $model; } private function templateStub() { // 获取两个模板文件 $stubs stub); } return $renderStubs; } private function getStub() { $stubs = [ 'Eloquent' => $this->files->get(resource_path('stubs/Repository').DIRECTORY_SEPARATOR

    1.6K21编辑于 2022-01-10
  • 来自专栏站长的编程笔记

    TP6.0 自定义命令创建类文件

    创建逻辑层类文件模板 ---- 创建以下文件的一个副本 vendor\topthink\framework\src\think\console\command\make\stubs\model.stub 拷贝命令行生成模型类的模板 ---- 拷贝命令行生成模型类的模板, 粘贴到 app\command\make\stubs\logic.stub vendor\topthink\framework\src \think\console\command\make\stubs\model.stub 文件内容如下 <?

    78730编辑于 2023-01-16
  • 来自专栏有文化的技术人

    聊聊Golang中的单元测试

    可以直接使用: ctrl := gomock.NewController(t) defer ctrl.Finish() mockcli := mockredis.NewMockClient(ctrl) stubs := gostub.Stub(&GetClient, func() redis.Client { return mockcli }) defer stubs.Reset() mockcli.EXPECT

    67740编辑于 2023-08-19
  • 来自专栏小工匠聊架构

    Apache ZooKeeper - JMX监控 ZooKeeper 的运行状态

    java.rmi.server.hostname The value of this property represents the host name string that should be associated with remote stubs By default, the remote stubs for locally created remote objects that are sent to client contains the For remote stubs to be associated with a specific interface address, the java.rmi.server.hostname system

    1.2K20发布于 2021-08-17
  • 来自专栏啄木鸟软件测试

    一文让你了解微服务契约测试

    org.springframework.beans.factory.annotation.Autowired; @AutoConfigureRestDocs(outputDir = "target/stubs 用JUnit运行StubsGenerator.java,测试通过 在@AutoConfigureRestDocs(outputDir = "target/stubs/META-INF/com.example 48fb-b020-83dfd89ef7db" } [INFO] Started stub server for project [C:\Code\MyJava\javawork\card\target\stubs :+:stubs] on port 8080 with [2] mappings [INFO] All stubs are now running RunningStubs [namesAndPorts ={C:\Code\MyJava\javawork\card\target\stubs:+:stubs=8080}] [INFO] Press ENTER to continue...

    51310编辑于 2024-09-10
领券