Tôi đang chạy phiên bản 1.0.3 trên máy tính xách tay Ubuntu 12.04.1 của mình và tôi đã gặp sự cố khi tôi chạy một số mã trong main(), nó hoạt động nhiều khác hơn nếu tôi chạy nó với thử nghiệm.Mã Go hoạt động khác đi thử nghiệm khi chạy thử
Dưới đây là ví dụ của tôi:
Từ main.go
package main
import (
"image"
"image/jpeg"
"fmt"
"myproj/htmlutil"
[some imports removed]
)
func main() {
img, err := htmlutil.GetResizedImageFromWeb("http://img.foodnetwork.com/FOOD/2011/05/04/FNM_060111-OOT-B005_s4x3.jpg")
if err != nil {
fmt.Println("There was a problem ",err)
}
fmt.Println("Bounds were ",img.Bounds())
}
Từ myproj/htmlutil_test.go
package htmlutil
import (
"image"
"fmt"
"testing"
[some imports removed]
)
func TestGetImageFromURL(t *testing.T){
img, err := GetResizedImageFromWeb("http://img.foodnetwork.com/FOOD/2011/05/04/FNM_060111-OOT-B005_s4x3.jpg")
if err != nil {
t.Fatalf("There was a problem %q",err)
}
fmt.Println("Bounds were ",img.Bounds())
}
và chức năng mà họ gọi, GetResizedImageFromWeb(), là trong myproj/htmlutil .go:
package htmlutil
import (
"errors"
"fmt"
"image"
"io/ioutil"
"net/http"
[some imports removed]
)
func GetResizedImageFromWeb(imageURL string) (image.Image, error) {
resp, err := http.Get(imageURL)
if err != nil {
return nil, errors.New(fmt.Sprint("There was a problem reading the site %q Debug[%s]",imageURL, err))
}
defer resp.Body.Close()
//Decode the image using image's general purpose decoder
image, s, err := image.Decode(resp.Body)
if err != nil {
return nil, err
}
return resizeImage(image), nil
}
Khi tôi chạy "go run main.go" từ dòng lệnh, tôi thấy các giới hạn của hình ảnh từ url và có thể lưu nó dưới dạng tệp jpg trên đĩa nếu tôi muốn sử dụng hàm trong main.go. Tuy nhiên, khi tôi chạy "thử nghiệm" từ gói htmlutil, tôi nhận được lỗi sau:
There was a problem "image: unknown format"
Điều gì gây ra sự cố chỉ thất bại trong các bài kiểm tra đơn vị? Tôi đang làm gì sai?
Đoán duy nhất của tôi là vì lý do nào, html.Get() không trả về tất cả dữ liệu trong kịch bản thử nghiệm, nhưng tôi vẫn bối rối là tại sao điều đó xảy ra.