Как вернуть данные из БД через службу хранилища с MVC и Moq - PullRequest
0 голосов
/ 17 февраля 2020

Мне нужно извлечь данные из БД через сервис, чтобы проверить собранные данные на структурную достоверность. то есть данные в БД указывают размеры частей захваченной каскадной строки (в определенном порядке), которые я высмеиваю. Так что не беспокойтесь.
Но я не хочу издеваться над данными службы.
Я хочу на самом деле получить данные БД, которые могут сильно меняться / различаться для разных клиентов и разных сценариев ios, или меняйте регулярно.
Таким образом, изменение макетированных данных для каждого сценария невозможно.

Служба реализует интерфейс, а также внедряет интерфейс уровня доступа к данным.

Я устанавливаю 'CallBase' как true, но я не получаю данные БД обратно. Пожалуйста помоги. Спасибо

public interface I_PartDao
{
    ExBool List(out List<GXL_PartSizes> _PartSizes);
}

public class GXL_PartSizes
    {
        public int? ID { get; set; }
        public int? PartLength { get; set; }
        public int? SortOrder { get; set; }

        public  GXL_PartSizes()
        {
            this.ID = null;
            this.PartLength = null;
            this.SortOrder = null;
        }
    }


// Service Layer
public interface I_PartBo
{
    ExBool List(out List<GXL_PartSizes> _PartSizes);
}

public class PartBo : I_PartBo
{
    // For the injection of the Dao services (Dao handles the Ado CRUD operations against MSSQL dbase)
    private I_PartDao PartDao;

    public PartBo(I_PartDao dao_Part)
    {
        this.PartDao = dao_Part ?? throw new ArgumentNullException("dao_Part");
    }

    public ExBool List(out List<GXL_PartSizes> _PartSizes)
    {
        return this.PartDao.List(out _PartSizes);
    }
}


[TestClass]
public class GXL_ConcatenatedStructures_Test
{
    ExBool result = new ExBool();   // A class to handle error messages and statuses
    private List<GXL_PartSizes> partSizes;


    [TestMethod]
    public void Test_Part_1_Length_matches_dbStructure_for_part1()
    {
        // Arrange
        var mockService = new Mock<I_PartBo>();

        // This is retrieved from the data posted back to the controller,..but for here and now, just a local populated strign var
        var concatenatedString_part1 = "ABC";

        // Act
        //mockService.CallBase = true;

        mockService
            .Setup(x => x.List(out partSizes))
            .Returns(result);


        //  Assert
        Assert.AreEqual(concatenatedString_part1, partSizes[0].PartLength);
    }
}

1 Ответ

0 голосов
/ 17 февраля 2020

Я думал, что есть способ сделать то, что я хотел, используя moq.

Однако, просто используя обычные конкретные классы, как в обычном (без DI) способе, данные БД получено т.е.

NamespaceX.GLX_SetupDao dao = new NamespaceX.GLXSetupDao("data source=LAPTOP-a; Initial 
                                                          Catalog=aaaa; Integrated Security=True;");
GLX_SetupBo boService = new GLX_SetupBo(dao);
result = boService.List(out List<GXL_PartSizes> sizes);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...