Goroot/src/pkg/appengine/aetest/context.go sayfasının başına bakın (güncel kaynak henüz https://code.google.com/p/appengine-go numaralı telefondan). İlk bakışta, yeni test uygulaması, appenginetesting'un hafif bir beefier/farklı versiyonu gibi görünüyor, böylece aynı tür testleri gerçekleştirebilirsiniz, bkz. here, bunu sampleHandler (w http.ResponseWriter, r * http. İstek) denir. Alternatif
, aşağıdaki gibi sevdiği http.Handler en ContextHandler yapabilirsiniz: Bu fonksiyon testleri yapar
http.Handle("/myNewHandler", ContextHandler{myNewHandler})
:
type ContextHandler struct {
Real func(*appengine.Context, http.ResponseWriter, *http.Request)
}
func (f ContextHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
c := appengine.NewContext(r)
f.Real(c, w, r)
}
func myNewHandler(c appengine.Context, w http.ResponseWriter, r *http.Request) {
// do something
}
Sonra init yapabilirsiniz() üretimini desteklemek için kullanımı kolay:
func TestMyNewHandler(t *testing.T) {
c := aetest.NewContext()
r, _ := http.NewRequest("GET", "/tasks/findOverdueSchedules", nil)
w := httptest.NewRecorder()
myNewHandler(c, w, r)
if 200 != w.Code {
t.Fail()
}
}
İçerisinde bulunan context.go, appengine/aetest:
/* Paket aetest, testlerde kullanılmak üzere bir appengine.Context sağlar.
bir örnek test dosyası: paket
import (
"testing"
"appengine/memcache"
"appengine/aetest"
)
func TestFoo(t *testing.T) {
c, err := aetest.NewContext(nil)
if err != nil {
t.Fatal(err)
}
defer c.Close()
it := &memcache.Item{
Key: "some-key",
Value: []byte("some-value"),
}
err = memcache.Set(c, it)
if err != nil {
t.Fatalf("Set err: %v", err)
}
it, err = memcache.Get(c, "some-key")
if err != nil {
t.Fatalf("Get err: %v; want no error", err)
}
if g, w := string(it.Value), "some-value" ; g != w {
t.Errorf("retrieved Item.Value = %q, want %q", g, w)
}
}
ortam değişkeni APPENGINE_API_SERVER
foo_test kullanımı yürütülebilir api_server.py konumunu belirtir. Eğer unset ise, sistem PATH'a danışılır. Eğer
Martini kullanarak karşı değilseniz */
Çok şık görünmüyor 'var contextCreator fonk olması (Burada (Ginkgo ile) testini ayarlayabilirsiniz nasıl Tüm test dışı kod işleyicilerinde appengine.Context = appengine.NewContext' (https://github.com/icub3d/appenginetesting/blob/master/recorder_test.go#L14). – Dan
Her bir http.Handler içinde c: = appengine.NewContext (r) olması şık görünmüyor. Gönderiyi nasıl yaptığımı eklemek için güncelledim. – mzimmerman
Size katılıyorum ve bu harika bir çözüm gibi görünüyor. Aslında Gorilla Toolkit'i kullanıyorum ve örneğimi hafifçe ['github.com/gorilla/context'](http://www.gorillatoolkit.org/pkg/context] kullanmak için kullanıyorum. isteğin ayarlanmasıyla ilgili şeyler. – Dan