标签: testify

有没有办法将断言与证词联系在一起?

我非常喜欢作证所带来的go test.但是,我挖掘了文档并没有看到任何关于如何处理多个断言的内容.

Go会处理"第一次失败",因为它在第一次错误断言时失败了,还是只关注测试方法中的最后一个断言?

testing go testify

1
推荐指数
1
解决办法
249
查看次数

Testify Suites 中的SetupSuite 和SetupTest 之间的区别

我很长一段时间以来一直在试图找出SetupSuite和之间的区别。SetupTest根据博客上的信息,我了解到它SetupSuite在整个套件之前运行并且SetupTest在每个测试用例之前运行。但在这种情况下,什么是实际的例子呢?这两种情况下的依赖注入有何不同?

go testify

1
推荐指数
1
解决办法
5212
查看次数

无法通过 Testify Mock 对象错误

嗨,我正在尝试模拟 GO 中的结构。我正在使用作证来做到这一点。但我似乎无法让它工作,现在不要做我做错的事情。下面是我拥有的示例 main.go 和 main_test.go 文件

// Arithmetic ...
type Arithmetic interface {
    Add(int, int) int
    Subtract(int, int) int
}

// MathOperation ...
type MathOperation struct {}

// GetNewArithmetic ...
func GetNewArithmetic(obj Arithmetic) Arithmetic {
    if obj != nil {
        return obj
    }

    return MathOperation{}
}

// Add ...
func (a MathOperation) Add(num1 int, num2 int) int {
    return num1 + num2
}

// Subtract ...
func (a MathOperation) Subtract(num1 int, num2 int) int {
    return num1 - num2 …
Run Code Online (Sandbox Code Playgroud)

go testify

1
推荐指数
1
解决办法
5553
查看次数

如何只模拟接口的一种方法

我正在努力理解 Go 中的模拟(我正在寻找与 Mockito.spy 相关的东西,相当于 Go 中的 Java)。

假设我在 Go 中有一个带有 5 个方法的接口。但是我要测试的这段代码只引用了两种方法。现在我如何在不实现所有方法的情况下模拟这种依赖关系,即我在源代码中的实际实现实现了 5 个接口方法,但是有没有办法避免在测试文件中实现 5 个方法的虚拟接口实现。以下是我目前的做法,实现5个方法是可以管理的,但是如果接口有20个方法,模拟实现测试文件中的所有方法变得乏味。

例子:

handler.go 中的源代码:

type Client struct {}
type ClientStore interface {
  func(c *Client) methodOne() error {// some implementation}
  func(c *Client) methodTwo() error {// some implementation}
  func(c *Client) methodThree() error {// some implementation}
  func(c *Client) methodFour() error {// some implementation}
  func(c *Client) methodFive() error {// some implementation}
}
Run Code Online (Sandbox Code Playgroud)

api.go 中的源代码:

 func processFeed(c Client) error {
     err := c.methodOne()
     if(err != null) {
      return err …
Run Code Online (Sandbox Code Playgroud)

unit-testing mocking go gomock testify

1
推荐指数
1
解决办法
686
查看次数

单元测试Go具有ORM交互的函数

我写了一个函数:

func AllItems(w http.ResponseWriter, r *http.Request) {
    db, err := gorm.Open("sqlite3", "test.db")
    if err != nil {
        panic("failed to connect database")
    }
    defer db.Close()

    var items [] Item
    db.Find(&items)
    fmt.Println("{}", items)

    json.NewEncoder(w).Encode(items)
}
Run Code Online (Sandbox Code Playgroud)

我想对此进行单元测试.理想情况下,单元测试意味着需要测试每个功能线.我不确定如何打开数据库连接,然后是否显示数据库的所有内容.我该如何测试这段代码?

此函数是简单CRUD应用程序的GET端点.代码在这里.

unit-testing mocking go testify

-1
推荐指数
1
解决办法
28
查看次数

模拟时如何不使用接口?

我试图避免使用接口,因为我的用例不需要它(同样在https://www.ardanlabs.com/blog/2016/10/avoid-interface-pollution.html 中提到)。但是,要创建模拟(使用testify),我是否不需要模拟接口?我可以创建一个,但似乎很乏味。我的代码使用的所有地方都需要为它们的模拟编写接口,而不是它们的实际使用。有解决方法吗?

go testify

-1
推荐指数
1
解决办法
139
查看次数

标签 统计

go ×6

testify ×6

mocking ×2

unit-testing ×2

gomock ×1

testing ×1