Учитывая, что у меня есть класс контроллера как таковой:
public class ResourceController : AuthorizedController
{
public virtual string Resource()
{
//do magic
}
public virtual string ResourceParent()
{
var url = Resource();
return url;
}
}
}
С помощью жгута проводов:
[Subject(typeof (ResourceController))]
public class When_I_want_the_parent_resource : WithSubject<ResourceController>
{
private static readonly string ParentUrl = "/organizations/1";
private static readonly string ResourceUrl = "/organizations/1/contacts/1";
private static string _result;
private Establish context = () =>
{
The<ResourceController>()
.WhenToldTo(x => x.Resource())
.Return(ResourceUrl);
};
private Because of = () => _result = Subject.ResourceParent();
private It should_match_the_expected_parent_url = () =>
_result.ShouldEqual(ParentUrl);
}
Этот модульный тест не пройден, поскольку субъект.ResourceParent () возвратит нуль, потому что Machine.Fakes автоматически заблокировал этот метод.В качестве временного решения я просто удалил виртуальное ключевое слово из ResourceParent, чтобы иметь возможность протестировать мой код.Я предполагаю, что должно быть реальное решение для меня, чтобы сказать Machine.Fakes не переопределять ResourceParent()