Может быть $posts->id
, который вы передаете, не имеет результата в базе данных, поэтому вам нужно проверить его с помощью if-statement
public function show(Posts $posts)
{
$page = Posts::find($posts->id);
if($page == null){
$page = ['post_title' => 'Not Available'];
}
return view('web_views.index',['page' => $page]);
}
Я считаю, что эта ошибка из-за отсутствия данных для идентификатора в базу данных. Таким образом, если в соответствии с приведенным выше сценарий передаст извлеченные данные для просмотра в противном случае он будет помещать элемент в массив $page
.
public interface IFile {
void Copy(string source, string dest);
void Delete(string fn);
bool Exists(string fn);
}
public class FileImpl : IFile {
public virtual void Copy(string source, string dest) { File.Copy(source, dest); }
public virtual void Delete(string fn) { File.Delete(fn); }
public virtual bool Exists(string fn) { return File.Exists(fn); }
}
[Test]
public void TestMySystemCalls() {
var filesystem = new Moq.Mock<IFile>();
var obj = new ClassUnderTest(filesystem);
filesystem.Expect(fs => fs.Exists("MyFile.txt")).Return(true);
obj.CheckIfFileExists(); // doesn't hit the underlying filesystem!!!
}
Если абсолютно необходимо сделать это, , Изолятор Typemock является другом.
я не могу сказать, что использовал его сам, и я попытался бы разработать свой путь на основе этого вместо этого, но это сделает задание насколько я знаю.
Можно использовать ложную платформу для этого, и она создаст поддельную копию объекта Файла, и можно ввести файл в системе под тестом.
я рекомендую Насмешку Носорога.
Я склонен создавать интерфейс в большинстве своих проектов под названием IFileController, который начинает все операции файла на нем. Это может иметь основные плюс любые методы, что платформа.NET не предоставляет тому соглашению с файлами.
Используя платформу внедрения зависимости, можно получить экземпляр IFileController, не зная точно, что вводит его, и используйте его, не будучи должен бездельничать с насмешкой типов платформы. Это делает все намного более тестируемым, и в качестве награды можно изменить механизм хранилища файлов, не изменяя код вообще.
На вниз стороне, любым новым разработчикам нужно сказать об этом интерфейсе, иначе они будут просто использовать методы.NET непосредственно.
Я был бы использование Moq для этого . Необходимо было бы создать интерфейс и класс, который проксирует к реальной вещи, таким образом, Вы могли сделать, чтобы Moq создал экземпляр Вашего прокси (дразнивший экземпляр), но это - лучший способ протестировать эти виды вещей.
Я поддерживаю проект Jolt.NET на CodePlex, который содержит библиотеку для создания таких интерфейсов и их реализаций для вас. За дополнительной информацией обращайтесь к библиотеке Jolt.Testing .