Card
存储在一个称为Board
的外部软件包内,称为board
。由于
Card
必须向外部API提出请求,所以我的计划是创建使用用于测试dobs properties的接口的fake,例如
Card
板属性,当用户试图将卡放在完整或不存在的字段上时,这些程序会感到恐慌。这是我的第一个项目,但我已经有了Python,嘲笑和单位测试的经验。我想创建
Board
没有任何接口参数,但是我在Internet上看到的所有示例都包含一个我认为遵循原理的参数。我已经阅读了devops的tovops测试框架和Go研讨会
互联网上的conterfacs章节,以及互联网上的大量研究,通常向我展示了复杂的示例,使我感到困惑。作为新的收养者,我的问题是:如何模拟依赖于http请求的外部软件包结构?
这是我的代码:Board/board_test.go
isFull
卡/卡
Card
当然,对于您的构建方式的构建方式,建议将网络交互与package board
import (
"errors"
"poker_squares/card"
"testing"
)
type fakeCard struct {
data card.Card
err bool
}
func (c fakeCard) Card() (card.Card, error) {
if c.err {
return "", errors.New("Couldn't create card")
}
return c.data, nil
}
func TestBoard(t *testing.T) {
tests := []struct {
desc string
board Board
want string
expectError bool
}{
{
desc: "Add a card, board isn't full and isFull property is false",
expectError: false,
},
# Remove the rest of tests for brevity
}
}
的其他行为(是否存在)分开。假定在呼叫package card
type CardGetter interface {
Card() (Card, error)
}
type Card struct {
value string
suit string
}
func(c Card)()(Card, error){
# Fetch card from deckofcards API
}
时获取数据可以实现良好的API设计(不能说,因此使用建议的内容),可以通过在类型Card
Card
Card
中引入一个新字段来实现。