-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Wataru / boru 課題2 #11
base: master
Are you sure you want to change the base?
Conversation
AfterExtension string | ||
} | ||
|
||
type Encoder interface { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
画像のエンコードを、ストラテジーパターンを利用してリファクタリングしました。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
個人的な不明点をGithubコメントとして記載しました。
destFileClose func(file *os.File) error | ||
imageDecode func(r io.Reader) (image.Image, string, error) | ||
newImgEncoder func(ext string) (Encoder, error) | ||
) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
標準パッケージや自身の実装した関数のmockにパッケージ変数とinitを利用していますが、これで正しいか悩んでいます。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ただ可能な限り、テスト対象の関数内で利用しているパッケージをMockして、依存を減らす様にしました。(Mockのパッケージを使わないで実現するのに相当苦労しました。)
return fmt.Errorf("error") | ||
} | ||
|
||
type FileInfoMock struct{} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
os.FileInfoはInterfaceのため、test側でモックを実装しています。が、不要なメソッドも実装する必要があり苦労しました。埋め込みを用いた上で該当するメソッドだけ修正することは可能なのでしょうか。
) | ||
|
||
func init() { | ||
testing.Init() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
mainのテストにて、flag.Parse() をinitの中で実行していたため、testでflag引数を渡すことができず苦戦しました。こちら、run()側にflag.Parse() を渡すのか、 testing.Init() を呼び出すか、どちらが良いか悩んでいます。あまりテストコードが実装に漏れるのが嫌なのですが。。。他の方法があれば知りたいです。
課題2のPRになります。レビューをお願いいたします。
以下README.mdより転記
課題 2
【TRY】io.Readerとio.Writer
io.Readerとio.Writerについて調べてみよう
長文のため畳みます
> - 標準パッケージでどのように使われているか実装している標準パッケージ
どの様に使われているか
Write
やRead
で利用することができる。【TRY】テストを書いてみよう
1回目の課題のテストを作ってみて下さい
動作手順
カバレッジ
imageconverter
./imageconverter_coveage.html
main
./imageconverter_coveage.html
感想等
io.Readerとio.Writerについて調べてみよう
【TRY】テストを書いてみよう
flag.Parse()
をinitの中で実行していたため、testでflag引数を渡すことができず苦戦しました。こちら、run()側にflag.Parse()
を渡すのか、testing.Init()
を呼び出すか、どちらが良いか悩んでいます。あまりテストコードがメインの実装に漏れるのが嫌なので、他の方法があれば知りたいです。