- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个方法需要进行单元测试,但我被其中的模拟部分困住了。
private async void LoginCommandAsync()
{
.....
CancellationToken ct;
var result = await ClientAuthorizationService.CurrentClient.InvokeApiAsync(Constants.ApiConstants.AzureAuthMeData,
null, HttpMethod.Get, null, ct);
....
}
我尝试使用 Moq 模拟 Microsoft.WindowsAzure.MobileServices.MobileServiceClient。不幸的是,我总是在最后一行代码中得到 System.InvalidCastException
var currentClient = new Mock<IMobileServiceClient>(MockBehavior.Loose);
currentClient.Setup(x => x.InvokeApiAsync(Constants.ApiConstants.AzureAuthMeData,
null, HttpMethod.Get, null, ct)).Returns(Task.FromResult(token));
var disposableCurrentClient = currentClient.As<IDisposable>();
ClientAuthorizationService.CurrentClient = (MobileServiceClient)disposableCurrentClient.Object;
MobileServiceClient 继承自 IMobileServiceClient,IDisposable 但无论我如何尝试使用/分配模拟对象......它都不起作用。
public class ClientAuthorizationService : IClientAuthorizationService
{
public MobileServiceClient CurrentClient { get; set; }
public ClientAuthorizationService()
{
CurrentClient = new MobileServiceClient(Constants.ApiConstants.ApplicationUrl);
}
}
最佳答案
将 ClientAuthorizationService.CurrentClient
成员/属性从 MobileServiceClient
更改为 IMobileServiceClient
public interface IClientAuthorizationService {
IMobileServiceClient CurrentClient { get; set; }
}
public class ClientAuthorizationService : IClientAuthorizationService {
public ClientAuthorizationService() {
CurrentClient = new MobileServiceClient(Constants.ApiConstants.ApplicationUrl);
}
public IMobileServiceClient CurrentClient { get; set; }
}
这将允许在测试时分配客户端的模拟,因为 ClientAuthorizationService
现在依赖于抽象而不是实现问题。
//....
var clientAuthorizationService = new Mock<IClientAuthorizationService>();
var currentClient = new Mock<IMobileServiceClient>();
currentClient
.Setup(_ => _.InvokeApiAsync(It.IsAny<string>(), null, HttpMethod.Get, null, It.IsAny<CancellationToken>()))
.ReturnsAsync(token);
clientAuthorizationService
.Setup(_ => _.CurrentClient)
.Returns(currentClient.Object);
//.....
此外,建议不要使用 async void
除了事件处理程序
因此需要对被测代码进行相应的更新。
private async Task LoginCommandAsync() {
//.....
CancellationToken ct;
var result = await ClientAuthorizationService.CurrentClient.InvokeApiAsync(Constants.ApiConstants.AzureAuthMeData,
null, HttpMethod.Get, null, ct);
//....
}
关于c# - 模拟 Azure MobileServiceClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53251995/
我正在尝试使用 Azure 移动服务客户端来验证我正在使用 Xamarin.Android 构建的应用程序。我的 MainActivity 有以下代码: [Activity(Label = "AppN
我正在尝试测试我的组件,该组件的构造函数已注入(inject)名为 AzureService 的服务 这是组件片段: constructor(private azureService: AzureSe
我正在使用 Android Azure 移动服务 SDK 连接到 Azure 移动服务。当我使用 MobileServiceClient 的 invokeApi 时,当 Api 在 60 秒内完成时一
我正在开发 Azure MobileService/CordovaApp 设置。服务器在本地运行并具有以下设置来启用 CORS: 可以使用诸如之类的地址通过浏览器调用 API http://loca
我有一个方法需要进行单元测试,但我被其中的模拟部分困住了。 private async void LoginCommandAsync() { ..... Can
在 Microsoft.WindowsAzure.MobileServices 命名空间中,根据here,类 MobileServiceClient 应该具有 LogoutAsync 方法。 。但它没
MobileServiceClient 的同步表运行良好。但是,我需要在移动/客户端应用程序中维护一个位于客户端的非同步表。 我的 Google 技能让我失败,因为我不断获得离线同步表教程。 有人知道
我想调试 WebApi 客户端项目。 客户端示例来自 Azure,可供使用。我通过更改显示的行将其配置为使用本地 WebAPI 后端 var client = new WindowsAzure.Mob
我目前的 facebook 登录流程 100% 正常工作,我刚刚将 Google 添加到了方程式中。我编写了代码,以便我的 google 提供商 token 的格式和缓存方式与我的 facebook
我正在尝试使用 Angular 中的 WindowsAzure.MobileServiceClient 来执行单点登录和 CRUD 操作。作为一个 Angular 菜鸟,我试图找出最好的方法来做到这一
这是我的代码: MobileServiceClient a = new MobileServiceClient("http://appitalo.azurewebsites.net/"); 当我尝试在
所以我只是摆弄 Azure,并决定考虑在一个简单的基于 Windows 8.1 Xaml 的应用程序中进行一些身份验证。我正在按照this中概述的步骤进行操作文档。 我当前设置了 MobileServ
我可以创建一个 MobileServiceClient 和 GetTable()至InsertAsync ,并查看如何将我的模型插入到 Azure 中的 Easy Table 表中。但是当我 Read
我正在构建一个 Apache Cordova 移动应用,使用 Azure 移动服务向 Google 进行身份验证。为此,我使用 WinJS azure 客户端: var client = new Wi
我需要创建一个没有应用程序 key 的 MobileServiceClient 对象。我该怎么做? 最佳答案 var client = new MobileServiceClient("http://
我正在使用 Azure-mobile-service 登录 facebook。但是登录后却显示消息。如何隐藏消息框? var client = new WindowsAzure.MobileServi
我需要创建一个没有应用程序 key 的 MobileServiceClient 对象。我该怎么做? 最佳答案 var client = new MobileServiceClient("http://
我正在使用 Azure-mobile-service 登录 facebook。但是登录后却显示消息。如何隐藏消息框? var client = new WindowsAzure.MobileServi
关于从客户端 Javascript (MobileServiceClient) 使用 Azure 移动服务,我仍然不太清楚的一件事是安全性。我的移动服务 Appkey 直接暴露在客户端 JavaScr
我正在尝试从同步表中创建过去 10 天的“新增内容”类型的列表。 我不想同步整个表,因为它包含数万行或过去 10 天具有 CreatedAt 的行。 await App.syncTablePerson
我是一名优秀的程序员,十分优秀!