- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Go 中考虑这个单元测试文件。我正在使用 github.com/stretchr/testify/mock
包。
type Person struct {Name string; Age int}
type Doer struct { mock.Mock }
func (d *Doer) doWithThing(arg Person) {
fmt.Printf("doWithThing %v\n", arg)
d.Called(arg)
}
func TestDoer(t *testing.T) {
d := new(Doer)
d.On("doWithThing", mock.Anything).Return()
d.doWithThing(Person{Name: "John", Age: 7})
// I don't care what Age was passed. Only Name
d.AssertCalled(t, "doWithThing", Person{Name: "John"})
}
此测试失败,因为 testify
在我未超过年龄时在比较中使用 Age: 0
。我明白了,但我想知道,我如何断言通过的部分论点?我希望此测试通过任何 Age
,只要 Name = John
最佳答案
使用mock.MatchedBy
.
简而言之,它用 mock.argumentMatcher
(未导出)包装任意匹配器函数:
argumentMatcher performs custom argument matching, returning whether or not the argument is matched by the expectation fixture function.
特别是,mock.MatchedBy
的参数是:
[...] a function accepting a single argument (of the expected type) which returns a bool
所以你可以像下面这样使用它:
personNameMatcher := mock.MatchedBy(func(p Person) bool {
return p.Name == "John"
})
d.AssertCalled(t, "doWithThing", personNameMatcher)
关于unit-testing - 如何断言与 stretr/testify/mock AssertCalled 的部分匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68349850/
当我执行 go mod tidy 时。我收到以下错误: go: github.com/stretchrcom/testify@v1.4.0: parsing go.mod: unexpected mo
我的测试一直失败,但没有实际调用发生,但我肯定 func 被调用了(这是一个日志函数,所以我在终端上看到日志) 基本上我的代码看起来像这样: common/utils.go func LogNilVa
基本上,我在一个特定的包中创建了一个新的测试文件,其中包含一些简单的测试结构——没有实际的测试……只是一个嵌入 suite.Suite 的空结构类型,以及一个接受 *testing.T 对象的函数并在
AssertExpectations 的文档说“AssertExpectations 断言用 On 和 Return 指定的所有内容实际上都按预期调用。调用可能以任何顺序发生。”如果我想断言某些调用是
您好,我正在尝试在 GO 中模拟一个结构。我正在使用 testify 来做到这一点。但我似乎无法让它工作,现在也不知道我做错了什么。下面是我的示例 main.go 和 main_test.go 文件
我正在使用 testify 来测试我的代码,我想检查是否调用了一个函数。 我正在做以下事情: type Foo struct { mock.Mock } func (m Foo) Bar()
是否有任何使用 testify 编写干净的表驱动测试的示例。输入和预期输出的表驱动测试运行良好,但必须测试依赖项的输出似乎真的很难做到。 下面的示例使用了一个模拟接口(interface),并要求我编
下面是一个示例代码,它返回多个值。 func (c Calc) CreateTenantHandler(item *models.TenantInput) (*models.Response, *mo
我正在使用 testify 测试 XML 编码(marshal)处理,并使用 strings.Contains 检查我希望包含在 XML 中的行是否确实存在。 但是,我想区分实际 xml 与所需 xm
我有以下测试,我想将其转换为使用 github.com/stretchr/testify/assert 导入,完成这项工作的最佳做法是什么?现在的代码: func TestSdk(t *testi
如何在golang测试中模拟两次接口(interface)方法?例如: type myCache interface{ Get(key string, data interface{}) er
我正在尝试在服务器上运行单元测试,并使用“github.com/strethr/testify/mock”模拟数据库层。将所有代码放在这里会使它变得非常困惑,所以我创建了一个小项目,它将给出我的代码结
我试图找出 SetupSuite 和 SetupTest 之间的区别已经有一段时间了。根据博客上的信息,我了解到 SetupSuite 在整个套件之前运行,而 SetupTest 在每个测试用例之前运
在 Go 中考虑这个单元测试文件。我正在使用 github.com/stretchr/testify/mock包。 type Person struct {Name string; Age int}
docs以此为例: assert.Contains(t, {"Hello": "World"}, "Hello", "但是 {'Hello': 'World'} 确实包含 'Hello'") 但是运行
我的导入如下所示: import ( "testing" "github.com/stretchr/testify/assert" ) 当我尝试运行“go test”时,我收到错误消息: cannot
我是一名优秀的程序员,十分优秀!