我们有一个控制器,它派生自这样ControllerBase的动作:
public async Task<ActionResult> Get(int id)
{
try
{
// Logic
return Ok(someReturnValue);
}
catch
{
return Problem();
}
}
Run Code Online (Sandbox Code Playgroud)
我们还有这样的单元测试:
[TestMethod]
public async Task GetCallsProblemOnInvalidId()
{
var result = sut.Get(someInvalidId);
}
Run Code Online (Sandbox Code Playgroud)
但是ControllerBase.Problem()抛出一个空引用异常。这是来自 Core MVC 框架的一个方法,所以我真的不知道它为什么会抛出错误。我认为可能是因为 HttpContext 为空,但我不确定。是否有一种标准化的方法来测试控制器应该调用的测试用例Problem()?任何帮助表示赞赏。如果答案涉及模拟:我们使用 Moq 和 AutoFixtrue。
我想知道是否有任何理由使用
this.someProperty = this.route.snapshot.paramMap.get('someParam');
Run Code Online (Sandbox Code Playgroud)
代替
this.route.paramMap.subscribe((param) =>
{
this.someProperty = param.get('someParam');
});
Run Code Online (Sandbox Code Playgroud)
queryParamMap 也是如此。
在我关注的教程中(由 Deborah Kurata 在 Pluralsight 上发布),他们似乎默认使用快照,并且仅当您期望参数更改而路线保持不变时才订阅。但应用程序往往会随着时间而改变。更改可能会导致参数发生变化而路线保持不变的情况。人们很容易忽视这种情况。
那么使用订阅而不是快照应该是(或者是)最佳实践吗?
快照方式写起来比较短,但是还有其他好处吗?
我可能在这里征求意见,但我想知道是否有官方的最佳实践。
提前致谢。