我有一个带有名为“InActiveFlag”的布尔属性的模型,该属性来自第三方API。这会在我的视图模型中映射到名为“IsActive”的属性。 “IsActive”是“InActiveFlag”的反面
这是ViewModel类:
public class ViewModel
{
public int Id { get; set; }
public string Description { get; set; }
[Display(Name = "Is Active")]
public bool IsActive { get; set; }
}
这是Model Class:
public class Model
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("description")]
public string Description { get; set; }
[JsonProperty("inactiveFlag")]
public bool InactiveFlag { get; set; }
}
我正在尝试使用ShouldBeEquivalent的options参数将List<ViewModel>
与List<Model>
进行比较,但我无法弄明白。
我的控制器使用AutoMapper将List<Modle>
转换为List<ViewModel>
,如下所示:
List<ViewModel> viewModel = _mapper.Map<List<Model>>(listOfModels);
在我的控制器测试中,我将模型列表(testModel
)传递给控制器。然后,我想测试是否使用了正确且完整的List<ViewModel>
。
这是测试代码:
[Fact]
async void GetMethodViewModelIsListReturnedByApiCallbacksGet()
{
SetupControllerApiReturnsListOf100Models();
var viewResult = (ViewResult)await controller.Get();
List<ViewModel> viewModel = (List<ViewModel>)viewResult.Model;
viewModel.ShouldBeEquivalentTo(ListOfTestModels, options =>
options.Using<ViewModel>(ctx => ctx.Subject.IsActive.ShouldNotBe(ListOfTestModels.InActiveFlag)));
}
但这甚至没有编译......
我查看了文档,但options.Using
示例仅修改了现有的期望,我需要替换它,因为字段名称不同。
如何告诉FluentAssertions将主题的属性与expectation参数的特定属性进行比较并覆盖相同的名称约定?