Documentation Index
Fetch the complete documentation index at: https://docs-mstore.faisalaffan.com/llms.txt
Use this file to discover all available pages before exploring further.
Testing
Panduan lengkap testing dari unit test sampai integration test.
๐งช Testing Pyramid
๐ Unit Test Example
func TestUserService_CreateUser(t *testing.T) {
// Arrange
mockRepo := new(MockUserRepository)
service := NewUserService(mockRepo)
user := &User{
Email: "[email protected]",
Name: "Test User",
}
mockRepo.On("Save", mock.Anything, user).Return(nil)
// Act
err := service.CreateUser(context.Background(), user)
// Assert
assert.NoError(t, err)
mockRepo.AssertExpectations(t)
}
๐ Integration Test
func TestOrderAPI_CreateOrder_Integration(t *testing.T) {
// Setup test database
db := setupTestDB(t)
defer db.Close()
// Create test data
user := createTestUser(t, db)
product := createTestProduct(t, db)
// Make API request
req := CreateOrderRequest{
Items: []OrderItem{
{ProductID: product.ID, Quantity: 2},
},
}
resp := makeRequest(t, "POST", "/orders", req, user.Token)
// Assert
assert.Equal(t, 201, resp.StatusCode)
// Verify database
order := getOrderFromDB(t, db, resp.Data.ID)
assert.Equal(t, "pending", order.Status)
}
๐ Running Tests
# Run all tests
go test ./...
# Run with coverage
go test ./... -cover
# Run specific package
go test ./internal/auth/...
# Run with race detector
go test ./... -race
# Generate coverage report
go test ./... -coverprofile=coverage.out
go tool cover -html=coverage.out
Service Template
Service structure