Подделка fake - это общий термин, который может использоваться для описания либо заглушки, либо макетного объекта (рукописного или иного), потому что оба они выглядят как реальный объект.
]
Является ли подделка заглушкой или макетом, зависит от того, как она используется в текущем тесте. Если он используется для проверки взаимодействия (утверждается против), это макет объекта. В противном случае это заглушка.Fakes гарантирует, что тест будет выполняться плавно. Это означает, что читатель вашего будущего теста поймет, каким будет поведение поддельного объекта, без необходимости читать его исходный код (без необходимости зависеть от внешнего ресурса).
Что означает тестовый запуск? Например, в нижеприведенном коде:
public void Analyze(string filename)
{
if(filename.Length<8)
{
try
{
errorService.LogError("long file entered named:" + filename);
}
catch (Exception e)
{
mailService.SendEMail("admin@hotmail.com", "ErrorOnWebService", "someerror");
}
}
}
Вы хотите протестировать метод mailService.SendEMail () , чтобы сделать это, чтобы вы могли имитировать исключение в вашем тестовом методе, так что вы просто необходимо создать класс Fake Stub errorService для имитации этого результата, тогда ваш тестовый код сможет протестировать метод mailService.SendEMail (). Как вы видите, вам нужно смоделировать результат, который является результатом другого класса External Dependency ErrorService.
Как мне изменить родителя GameObject, созданного с помощью PrefabUtility.InstantiatePrefab?
blockquote>Это верно, но убедитесь, что отменить также является ] экземпляр объекта .
obj.transform.parent = cancel.transform;
Извините, я только что нашел проблему:
Я не добавил ее, поскольку сообщение об ошибке сбивало с толку / неправильно сформулировано.
Я использовал Resources.FindObjectsOfTypeAll
для проверки наличия exampleParent
типа SomeType
на сцене.
Следуя примеру Unity, который должен исключить префабы, я использовал
// Validation for the Menu item
[MenuItem("Example/Create Clone", true]
private bool TargetAvailable()
{
foreach (var target in (SomeType[])Resources.FindObjectsOfTypeAll(typeof(SomeType))
{
if (target.hideFlags == HideFlags.NotEditable || target.hideFlags == HideFlags.HideAndDontSave)
continue;
if (!EditorUtility.IsPersistent(target.transform.root.gameObject))
continue;
exampleParent = target.transform;
return true;
}
exampleParent = null;
return false;
}
Но это на самом деле неправильно и не работает, так как оно всегда возвращалось мне ссылку SomeType
из сборных! (Мне уже показалось немного странным, что они делают
!EditorUtility.IsPersistent(target.transform.root.gameObject))
continue;
Я не уверен, что этот !
может быть типом в их примере кода?!
Так ошибка, которая звучит так, как если бы установка родителя не была разрешена, на самом деле означает и должна сказать
установка родителя в . Преобразование, которое находится в префабе, не допускается. .
blockquote>, чем я нашел бы актуальную проблему в первую очередь.
Так что снова в качестве обходного пути, пока я не смогу выяснить, что
FindObjectsOfTypeAll
вместо этого я переключился наObject.FindObjectOfType
, предполагая, что моя цель всегда будет активной на сцене. И использованиеSetParent
теперь работает вместе сPrefabUtitlity.InstantiatePrefab
.