.Net Core 2.0を使用してWeb APIを作成しています。私はActive Directory Graph API(https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-devquickstarts-graph-dotnet)を使って新しいユーザーを作成しています。サードパーティのAPIをテストする方法。ユニットテストまたは統合テストを作成する必要がありますか?
// arrange
var service = new ADGraphService();
// act
bool result = service.CreateUser(new UserModel(){ Email = "[email protected]", ..... });
var users = service.GetUsers();
// assert
result.Should().Be(true);
users.Should().Contain(user => user.Email == "[email protected]");
それとも、このようなインターフェースのユニットテストの実装:
1があるべき// arrange
......
var fakeHttpClient = new Mock<IHttpClient>();
fakeHttpClient.Setup(x => x.PostAsync(url, userModelContent)).Returns(mockJsonResult);
var service = new ADGraphService(fakeHttpClient.Object);
// act
var result = service.CreateUser(new UserModel { Email = "[email protected]", .......});
// assert
result.Should().Be(true);
私はのような統合テストを作成することを考えているようなインターフェースで
interface IADGraphService
{
bool CreateUser(UserModel model);
IList<UserModel> GetUsers();
bool UpdateUser(UserModel model);
bool DeleteUser(string userObjectId);
}
をIADGraphServiceを作成しましたそのような場合に使用される?
なぜ統合テストが必要なのか?それは良い見えます。 CreateUserが動作しないようにアレンジするだけです。 – Serghei
@Sergheiは疑問に思っています。私はたくさんの記事を検索し、サードパーティのAPIが提供する結果を模倣すべきだと言いました。 –
などのサードパーティ製APIをモックするならば、それは単体テストであり、私の日常業務ではIntegrations Testではありません。私は両方を使用します。あなたはそれについてここで読むことができますhttps://stackoverflow.com/questions/10752/what-is-the-difference-between-integration-and-unit-tests – Serghei