Heim  >  Artikel  >  Backend-Entwicklung  >  Wie rufe ich die Funktion „assert“ von einer Nicht-Testfunktion auf?

Wie rufe ich die Funktion „assert“ von einer Nicht-Testfunktion auf?

WBOY
WBOYnach vorne
2024-02-10 10:30:10493Durchsuche

Wie rufe ich die Funktion „assert“ von einer Nicht-Testfunktion auf?

Der PHP-Editor Strawberry bringt Ihnen einen Artikel darüber, wie Sie die Funktion „assert“ aus einer Nicht-Testfunktion aufrufen. In PHP verwenden wir normalerweise die Funktion „assert“ zum Schreiben von Testfällen, aber manchmal möchten wir sie auch in Nicht-Testfunktionen verwenden. In diesem Artikel werden die Schritte und Vorsichtsmaßnahmen zum Aufrufen der Funktion „assert“ in Nicht-Testfunktionen ausführlich vorgestellt, um den Lesern ein besseres Verständnis und eine bessere Verwendung dieser Funktion zu ermöglichen. Egal, ob Sie Einsteiger oder erfahrener Entwickler sind, in diesem Artikel erhalten Sie wertvolle Erkenntnisse und Tipps. Lasst uns gemeinsam erkunden!

Frageninhalt

Diese Frage ähnelt Behauptungen in Nicht-Testfunktionen in Go, aber ich möchte assert.ElementsMatch von der Nicht-Testfunktion aus aufrufen.

Wie instanziiere ich ein testing.T Objekt?

Die Funktion wird schließlich von main aufgerufen, das mit Flags konfiguriert ist, sodass es sich nicht nur um einen Test handeln kann.

Kontext: Wir führen eine Datenmigration von einer Quelldatenbank in eine Zieldatenbank durch. Der erste Teil der Migration besteht darin, die Daten von der Quelle in die Speichertabelle des Ziels zu kopieren. Der zweite Teil (und hier kommt assert.ElementsMatch 发挥作用的地方)是查看保存表和通用表有何不同 - 我们希望尝试通过数据迁移捕获不可预见的情况(例如,某些日期的格式可能不同或错误)身份证号码已复制)。第三部分是,一旦保存表数据经过审查,将其复制到通用表中。这一切听起来有点过于复杂,但这可能是因为当前正在使用源数据库和目标通用数据库。

解决方法

您不需要 testing.T ins Spiel) besteht darin, zu sehen, wie sich die gespeicherte Tabelle von der generischen Tabelle unterscheidet. Wir möchten versuchen, unvorhergesehene Situationen bei der Datenmigration zu erfassen (z. B. können einige Daten anders oder falsch formatiert sein) ID-Nummern kopiert). Der dritte Teil besteht darin, die gespeicherten Tabellendaten nach Überprüfung in die gemeinsame Tabelle zu kopieren. Das klingt alles etwas zu komplex, aber das liegt wahrscheinlich daran, dass derzeit sowohl die Quell- als auch die Ziel-Universaldatenbank verwendet werden.

Workaroundassert.ElementsMatch 函数采用 assert.TestingT 作为其参数,这是一个具有单一方法的接口。因此,您可以简单地定义该接口的自定义实现,该实现可以使用该方法执行您喜欢的任何操作,并将该自定义实现的实例传递给 assert.ElementsMatchSie benötigen keine Instanz von

.

🎜🎜 Die Funktion verwendet assert.TestingT Als Argument handelt es sich um eine Schnittstelle mit einer einzelnen Methode. Sie können also einfach eine benutzerdefinierte Implementierung der Schnittstelle definieren, die mit der Methode alles tun kann, was Sie möchten, und eine Instanz dieser benutzerdefinierten Implementierung an 🎜 übergeben. 🎜 🎜Zum Beispiel: 🎜
type testingT struct{}

func (testingT) Errorf(format string, args ...interface{}) {
    fmt.Printf(format, args...)
}

// ...

t := new(testingT)
if assert.ElementsMatch(t, listA, listB) {
    // ...
}

Das obige ist der detaillierte Inhalt vonWie rufe ich die Funktion „assert“ von einer Nicht-Testfunktion auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen