我不知道从哪里开始,但让我简要介绍一下我在哪里以及我想要实现的目标.我对MVVM上的单元测试很陌生,并且很难测试我使用PRISM委托命令属性公开的命令.我的委托命令调用必须等待的异步方法,以便我可以获得实际结果.下面是一个asyc方法,由我想测试的方法调用.
async void GetTasksAsync()
{
this.SimpleTasks.Clear();
Func<IList<ISimpleTask>> taskAction = () =>
{
var result = this.dataService.GetTasks();
if (token.IsCancellationRequested)
return null;
return result;
};
IsBusyTreeView = true;
Task<IList<ISimpleTask>> getTasksTask = Task<IList<ISimpleTask>>.Factory.StartNew(taskAction, token);
var l = await getTasksTask; // waits for getTasksTask
if (l != null)
{
foreach (ISimpleTask t in l)
{
this.SimpleTasks.Add(t); // adds to ViewModel.SimpleTask
}
}
}
Run Code Online (Sandbox Code Playgroud)
这里也是我的VM中的命令,它调用上面的异步方法
this.GetTasksCommand = new DelegateCommand(this.GetTasks);
void GetTasks()
{
GetTasksAsync();
}
Run Code Online (Sandbox Code Playgroud)
现在我的测试方法就像
[TestMethod]
public void Command_Test_GetTasksCommand()
{
MyViewModel.GetTaskCommand.Execute(); // this should populate …Run Code Online (Sandbox Code Playgroud) 我希望能够检测到用户:
目前,我正在使用像这样的ASCII范围(C#语法):
string searchKeyWord = Console.ReadLine();
var romajis = from c in searchKeyWord where c >= ' ' && c <= '~' select c;
if (romajis.Any())
{
// Romajis
}
else
{
// Japanese input
}
Run Code Online (Sandbox Code Playgroud)
有没有更好,更快(更强...)的方法来做到这一点?
编辑:问题可以推广到具有非ASCII字符集的任何其他语言。