Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menguji Pertanyaan dan Mutasi GraphQL dengan Berkesan dengan Testify dan GQLgen di Golang?
Apabila menguji pertanyaan dan mutasi GraphQL dalam aplikasi Golang, adalah penting untuk mempunyai strategi ujian yang mantap untuk memastikan kefungsian dan kebolehpercayaan anda Titik akhir API.
Terletak dalam labirin rangka kerja ujian Golang, memberi keterangan menjadi pilihan utama kerana kesederhanaan dan kelengkapannya. Digabungkan dengan pakej gqlgen/klien, yang memberikan bantuan yang tidak ternilai dalam menguji GraphQL, anda boleh menyelidiki alam ganjaran ujian unit yang berkesan.
Mari kita mulakan contoh praktikal untuk menerangkan proses menguji pertanyaan dan mutasi GraphQL :
<code class="go">// graph/resolver/root.resolver_test.go import ( "context" "testing" "github.com/99designs/gqlgen/client" "github.com/99designs/gqlgen/graphql/handler" "github.com/mrdulin/gqlgen-cnode/graph/generated" "github.com/mrdulin/gqlgen-cnode/graph/model" "github.com/mrdulin/gqlgen-cnode/mocks" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" ) ... type MockedUserService struct { mock.Mock } func (s *MockedUserService) GetUserByLoginname(loginname string) *model.UserDetail { args := s.Called(loginname) return args.Get(0).(*model.UserDetail) } func (s *MockedUserService) ValidateAccessToken(accesstoken string) *model.UserEntity { args := s.Called(accesstoken) return args.Get(0).(*model.UserEntity) } ...</code>
Menggunakan objek olok-olok ini, kami boleh meneruskan untuk mencipta ujian unit komprehensif yang mengesahkan kefungsian penyelesai GraphQL kami:
<code class="go">// graph/resolver/root.resolver_test.go ... // TestMutationResolver_ValidateAccessToken is a test example for the ValidateAccessToken mutation. func TestMutationResolver_ValidateAccessToken(t *testing.T) { t.Run("should validate accesstoken correctly", func(t *testing.T) { // Create a mocked user service mockedUserService := new(mocks.MockedUserService) // Inject the mocked service into our resolver resolvers := resolver.Resolver{UserService: mockedUserService} // Create a GraphQL client c := client.New(handler.NewDefaultServer(generated.NewExecutableSchema(generated.Config{Resolvers: &resolvers}))) // Set up expected return values from the mock service ue := model.UserEntity{ID: "123", User: model.User{Loginname: &loginname, AvatarURL: &avatarURL}} mockedUserService.On("ValidateAccessToken", mock.AnythingOfType("string")).Return(&ue) // Run the GraphQL mutation query var resp struct { ValidateAccessToken struct{ ID, Loginname, AvatarUrl string } } q := ` mutation { validateAccessToken(accesstoken: "abc") { id, loginname, avatarUrl } } ` c.MustPost(q, &resp) // Assert that the mock service was called as expected mockedUserService.AssertExpectations(t) // Check the response from the GraphQL mutation require.Equal(t, "123", resp.ValidateAccessToken.ID) require.Equal(t, "mrdulin", resp.ValidateAccessToken.Loginname) require.Equal(t, "avatar.jpg", resp.ValidateAccessToken.AvatarUrl) }) } ...</code>
Dengan melaksanakan pendekatan ujian ini, anda boleh dengan berkesan teliti penyelesai GraphQL anda dan lengkapkan aplikasi anda dengan asas kualiti dan kebolehpercayaan yang kukuh.
Atas ialah kandungan terperinci Bagaimana untuk Menguji Pertanyaan dan Mutasi GraphQL dengan Berkesan dengan Testify dan GQLgen di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!