📑
Flutterでtestを書いてみた👀
|プログラムにおける単体テストとは?
単体テストとは関数などが返す値はこうです。という感じで
プログラムのコードの品質、信頼性を保証するために存在します。
//テストを行う関数
const counter (num1,num2) => {
return answer = num1 + num2
}
//テストを実行するコード
test("正常系のテスト",(){
final int num1 = 1;
final int num2 = 2;
counter(num1,num2)
expect(3)
})
これでこのcounterという関数では引数を2つ与えると加算し、値を返すというテストができました
※expextというのがテストをする際に返ってきて欲しい値、期待値です
|もう少し複雑なテストを書いてみよう
- リポジトリ
- ユースケース
主に上記2つがメインとなってきます
|会員登録をするケースの単体テストの実施(USECASE ~Mock~)
今回のケースでは、repository,provider,entityを使用している前提です
//usecase_test.dart
group('会員登録のテスト',()async{
test('正常系',()async{
final container = override();
final notifier = container.read(RegisterUseCaseProvider.notifier);
var user = WebUserState(
userFirstName:'ほげ'
userLastName:'太郎'
zipCode:'1210813'
phoneNumber:'09012345678'
email:'hoge@exmple.com'
)
notifier.setUserState(user);
await notifier.regist()
expext(
notifier.debugState.status,
WebUserStateStatus.end
)
});
});
ProviderContainer override(){
return ProviderContainer(
overrides: [
webUserRegisterRepo.overrideWithProvider(
Provider((ref) => webUserRegisterRepoMock())
)
])
}
class webUserRegisterRepoMock extends Mock
implements webUserRegisterRepo{
Future<void> registerUser(WebUserState user) async {
switch(user.zipCode){
//zipcodeが1210813の時は正常系
case '1210813'
break
}
}
}
Discussion