Advertisement
Guest User

Untitled

a guest
May 24th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.32 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "errors"
  5.     "log"
  6.     "testing"
  7. )
  8.  
  9. type HesteService interface {
  10.     CreateHest(name string) error
  11.     DeleteHest(name string) error
  12. }
  13.  
  14. type InMemoryHesteService struct {
  15.     heste map[string]string
  16. }
  17.  
  18. func NewInMemoryHesteService() HesteService {
  19.     return &InMemoryHesteService{
  20.         heste: make(map[string]string),
  21.     }
  22. }
  23.  
  24. func (s *InMemoryHesteService) CreateHest(name string) error {
  25.     s.heste[name] = "heeeeest"
  26.     return nil
  27. }
  28.  
  29. func (s *InMemoryHesteService) DeleteHest(name string) error {
  30.     delete(s.heste, name)
  31.     return nil
  32. }
  33.  
  34. type mockHesteService struct {
  35.     // returns this error on all ops
  36.     err error
  37. }
  38.  
  39. func NewMockHesteService(err error) HesteService {
  40.     return &mockHesteService{
  41.         err: err,
  42.     }
  43. }
  44.  
  45. func (s *mockHesteService) CreateHest(name string) error {
  46.     return s.err
  47. }
  48.  
  49. func (s *mockHesteService) DeleteHest(name string) error {
  50.     return s.err
  51. }
  52.  
  53. type App struct {
  54.     Heste HesteService
  55. }
  56.  
  57. func (a *App) Run() {
  58.  
  59.     if err := a.Heste.CreateHest("Pernille"); err != nil {
  60.         log.Fatalf("error: %v", err)
  61.     }
  62.  
  63. }
  64.  
  65. func NewApp() *App {
  66.     return &App{
  67.         Heste: NewInMemoryHesteService(),
  68.     }
  69. }
  70.  
  71. func main() {
  72.  
  73.     a := NewApp()
  74.     a.Run()
  75.  
  76. }
  77.  
  78. func TestAppErrors(t *testing.T) {
  79.  
  80.     a := &App{
  81.         Heste: NewMockHesteService(errors.New("virker ikke hehehe")),
  82.     }
  83.  
  84.     a.Run()
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement