Условные макетные данные(Moq) с помощью Bunit

#c# #razor #moq #bunit

Вопрос:

У меня есть условные фиктивные данные с moq, подобные этому, где они возвращают разные данные в зависимости от того, равен ли параметр нулю или нет.

  locationMock
    .Setup(x => x.GetAllLocations(It.IsAny<SearchRequest>()))
    .Returns((SearchRequest req) =>
        {
            return req.SearchText == null
                ? thread
                : filteredThread;
        });
 

Я регистрирую услугу следующим образом Services.AddSingleton(locationMock.Object);

Затем у меня появляется поле ввода, в котором я ввожу «МЕСТОПОЛОЖЕНИЕ ТЕСТА» и нажимаю значок поиска, который должен фильтровать данные, иначе говоря, возвращать «Отфильтрованный поток». Когда я отлаживаю его, я вижу, что он работает в разных условиях. Однако возвращаемые данные всегда являются «потоком», который содержит не отфильтрованные данные, а исходные данные.

Мне интересно, что я делаю не так или могу ли я что-то сделать, чтобы добиться условного возврата данных, отображаемых в bunit.

 var cut = RenderComponent<LocationList>();
var instance = cut.Instance;
instance.use = UseMode.None;
instance.Locations = locationData;

cut.Render();

cut.Find(".prompt.input-box").Input("TEST LOCATION");            
cut.Find(".search-icon").Click();

cut.Render();
var bob = cut.FindAll("table > tbody > tr");
cut.WaitForState(() => cut.FindAll("table > tbody > tr").Count == 1, TimeSpan.FromSeconds(15));
 

Комментарии:

1. Установка параметров/свойств непосредственно в компоненте экземпляра может оказаться не очень хорошей идеей. Вместо этого попробуйте использовать SetParametersAndRender(...) . Это установит новые параметры так, как они были бы в обычной среде выполнения Blazor. Подробнее здесь: bunit.dev/документы/взаимодействие/…