如何使用最小起订量模拟 Microsoft Graph API GraphServiceClient

How to mock Microsoft Graph APIs GraphServiceClient using moq

我的项目正在使用 GraphServiceClient 来获取用户组名称,使用下面的 code.This 也在使用 Microsoft.Identity.Web 包,因此 GraphServiceClient 是通过构造函数注入的。

 var group = await graphClient.Me.TransitiveMemberOf
                             .Request()
                             .GetAsync();

组变量然后用于获取组的显示名称。

我想使用 NUnit 和 Moq 对上述代码进行单元测试。

 var mockAuthProvider = new Mock<IAuthenticationProvider>();
 var mockHttpProvider = new Mock<IHttpProvider>();
 var mockGraphClient = new Mock<GraphServiceClient>(mockAuthProvider.Object, mockHttpProvider.Object);
    
 mockGraphClient.Setup(c => c.Me.TransitiveMemberOf.Request().GetAsync(CancellationToken.None)).ReturnsAsync(???);

ReturnAsync 将 return IUserTransitiveMemberOfCollectionWithReferencesPage,但我如何为其提供默认值以便我可以测试实际获取 displayName

的方法的其余部分

提前致谢。

创建 UserTransitiveMemberOfCollectionWithReferencesPage 的新实例并向当前页面添加新的 Group 项。

UserTransitiveMemberOfCollectionWithReferencesPage page = new 
UserTransitiveMemberOfCollectionWithReferencesPage
{
    AdditionalData = new Dictionary<string, object>(),
};
page.Add(new Group { DisplayName = "MyName" });

Return ReturnsAsync 方法中的页面

mockGraphClient.Setup(c => c.Me.TransitiveMemberOf.Request().GetAsync(CancellationToken.None))
    .ReturnsAsync(() => page);