Вы неправильно используете структуру насмешки.Вы также, похоже, пытаетесь издеваться над тестируемой системой.
Правило большого пальца, только издевайтесь над тем, что абсолютно необходимо, и только в том случае, если использование реализации стучит в эффекты
Если, например, BusinessObject
имел зависимость от уровня доступа к данным, как вы указали в комментариях к коду,
public class BusinessObject: IBusinessObject{
private readonly IDataAccess dataAccess;
public BusinessObject(IDataAccess dataAccess) {
this.dataAccess = dataAccess;
}
public OutPutModel SomeBusinessMethod(InputModel1 obj1, InputModel2 obj2) {
// Performing some actions here including seding a call
// to the data access layer to perform some db operation.
var outPutModel = dataAccess.SomeMethod(obj1, obj2);
return outPutModel;
}
}
вы бы смоделировали зависимость, как она используется в тестируемом методе, а затем вызвали фактический экземпляр классатестируется.
Например
[Fact]
public void MyBusinessObject_ReturnsOutPutModel() {
//Arrange
var expected = new OutPutModel {
// populate as needed
}
//mock the dependency
var dataAccessMock = new Mock<IDataAccess>();
//Setup the mocked dependency
dataAccessMock
.Setup(_ => _.SomeMethod(It.IsAny<InputModel1>(), It.IsAny<InputModel2>()))
.Returns(expected);
//inject the dependency into the subject under test
var businessObject = new BusinessObject(dataAccessMock.Object);
//needed objects for the test
var obj1 = new InputModel1 {
//populate as needed
};
var obj2 = new InputModel2 {
//populate as needed
};
//Act
var actual = businessObject.SomeBusinessMethod(obj1, obj2);
//Assert
Assert.AreEqual(expected, actual);
}