wireをプロダクトに導入してみたという話
- 12. 12
wireをプロダクトに導入してみた
● プロダクトというと
○ 基本的にloggerとかDBとか複数の依存先を持つ
○ 特にテストだと場合分けが多く、同じ生成コードが繰り返される
func TestServiceSuccess(t *testing) {
requiredService1 := FakeService1()
requiredService2 := FakeService2()
requiredService3 := FakeService3()
TestService := NewTestService(
requiredService1,
requiredService2,
requiredService3,
)
assert.True(t, TestService.run())
}
requiredService1 := FakeService1()
requiredService2 := FakeService2()
ここの部分コードをwireで生成する
- 13. 13
wireをプロダクトに導入してみた
func InitTestService() *Service {
wire.Build(
FakeService1,
FakeService2,
FakeService3,
FakeService4,
NewTestService,
)
return nil
}
Wireを使って
コードを生成
func InitTestService() *Service {
FakeService1 := FakeService1()
FakeService2 := FakeService2()
FakeService3 := FakeService3()
FakeService4 := FakeService4()
service := NewTestService(
requiredService1,
requiredService2,
requiredService3,
requiredService4,
)
return service
}
- 14. 14
wireをプロダクトに導入してみた
func Test(t *testing) {
requiredService1 := FakeService1()
requiredService2 := FakeService2()
.
.
.
TestService := NewTestService(
requiredService1,
requiredService2,
.
.
.
)
// 略
}
func Test(t *testing) {
testService := InitTest()
// 略
}こうなる