# I want to mock this function
func testCheckPluginFile(fName string){
plugin, _ := plugin.Open(path.Join("/I/expect/folder/","/plugin-lib-test/" fName))
plugin.Lookup("symbol")
}
# So I put this func like this
func testCheckPluginFile(fName string,pluginOpen func (path string) (*plugin.Plugin, error)){
plugin, _ := pluginOpen(path.Join("/I/expect/folder/","/plugin-lib-test/" fName))
plugin.Lookup("symbol")
}
但我做不到,因為 plugin.Plugin.lookup
你有另一種方法來解決它嗎?
uj5u.com熱心網友回復:
如何在 go[...] 中模擬 [...] 插件函式?
你不能。
如果你想測驗你必須使用一個真正的插件。
uj5u.com熱心網友回復:
Golang 中的 Mock 有點棘手,通常需要生成一些代碼。您需要為plugin包和for 撰寫介面plugin.Plugin(如果包本身不提供這些介面;唉,這通常是這種情況)。然后,使用模擬生成器(通常的嫌疑人是gomock)創建具有所有常用模擬功能(期望、條件回傳等)的模擬。在生產代碼中,提供您自己撰寫的生產實作;他們只能通過傳遞其稱之為真實的東西(包括方法簡單的Open()和Lookup()在這種情況下)。(請記住,您要測驗是否testCheckPluginFile正常作業,而不是測驗包是否正常plugin作業。)通過這樣做,您應該能夠遵循正確的 TDD 作業流程。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/358744.html
