FluentAssertions:更改属性的ShouldBeEquivalent的默认比较

时间:2018-01-08 00:58:10

标签: c# fluent-assertions

我有一个带有名为“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参数的特定属性进行比较并覆盖相同的名称约定?

0 个答案:

没有答案