Вызывание не было выполнено на макете, что здесь может быть не так? - PullRequest
0 голосов
/ 10 ноября 2010

эта ошибка вызывается следующим ТЕСТОМ. Если я тестирую DataLayer, база данных обновляется и все работает. однако макет продолжает посылать эту ошибку. У меня есть аналогичный тест, который работает почти с точным кодом (на InsertRPAData). единственное различие, которое я вижу, состоит в том, что XMLDataEntity является отличным объектом в тесте по сравнению с Verify, но оба они используют штрих-код = 1.

Над этим тестом нужно поработать, и XMLDataEntity как раз там, чтобы я мог его проверить. также пока игнорируйте возврат.

[TestInitialize]
public void TestInitialize()
{
    _mockRepository = new Mock<IRPADataLayer>();

    UnityUtil.UnityContainer = new UnityContainer();

    UnityUtil.UnityContainer.RegisterInstance(typeof(IRPADataLayer), _mockRepository.Object);
}


[TestMethod]
public void TestDoSuppressions()
{
    //Arange
    var suppressiontest = new Suppression();

    //Import the XML File
    XElement newElement = XElement.Parse(get090XML());
    XDocument testdoc = new XDocument();
    testdoc.Add(newElement);
    String string2Stream = String.Concat("1");
    Stream reader = new MemoryStream(ASCIIEncoding.Default.GetBytes(string2Stream));
    RPADataEntity rpa = new RPADataEntity();
    XMLDataEntity test = new XMLDataEntity();
    test.barcode = 1;
    rpa.RPAID = 1;
    rpa.XMLData = testdoc;
    //Act
    Int32 success = suppressiontest.DoSuppressions(reader, rpa);

    //Assert
    _mockRepository.Verify(x => x.UploadPreprocData(rpa, test));
}

Этот метод вызывается следующим образом.

   public Int32 DoSuppressions(Stream reader, RPADataEntity rpa)
   {
       XMLDataEntity test = new XMLDataEntity();
       test.barcode = 1;

       _IRPADataLayer.UploadPreprocData(rpa, test);

       return 1;
   }

и интерфейс такой

public interface IRPADataLayer
{
    void InsertPreProcData(PreProcDataEntity PreProcDataEntity);
    void InsertRpaData(RPADataEntity RPADataEntity);

    RPATypeEntity GetRPAType(String type);

    void UploadPreprocData(RPADataEntity rpa, XMLDataEntity xml);
}

1 Ответ

2 голосов
/ 10 ноября 2010

Ваше подтверждение ожидает определенный экземпляр XMLDataEntity (тот, который вы создали в своем тесте).

Однако тестируемый метод создает свой собственный XMLDataEntity и вызывает UploadPreprocData.

Таким образом, проверка завершилась неудачно, потому что метод не был вызван с ожидаемым экземпляром XMLDataEntity.

Большинство фальшивых сред предоставляют способ указать, что ожидаемый параметр может иметь любойэкземпляр, так что это может быть то, что вы хотите здесь.

Надеюсь, что поможет.

Редактировать: В Moq, проверка и исключение любого параметра данного типа выполняется с помощьюиспользуя:

It.IsAny<T>()

Где T - тип ожидаемого экземпляра.

В вашем случае это можно сделать так:

_mockRepository.Verify(x => x.UploadPreprocData(rpa, It.IsAny<XMLDataEntity>()));
...