Ложные методы Файла в.NET (как Файл. Копия (“1.txt”, “2.txt”))

Может быть $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.

14
задан Jim 5 November 2008 в 21:29
поделиться

6 ответов

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!!!
}
23
ответ дан 1 December 2019 в 09:34
поделиться

Если абсолютно необходимо сделать это, , Изолятор Typemock является другом.

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

3
ответ дан 1 December 2019 в 09:34
поделиться

Можно использовать ложную платформу для этого, и она создаст поддельную копию объекта Файла, и можно ввести файл в системе под тестом.

я рекомендую Насмешку Носорога.

0
ответ дан 1 December 2019 в 09:34
поделиться

Я склонен создавать интерфейс в большинстве своих проектов под названием IFileController, который начинает все операции файла на нем. Это может иметь основные плюс любые методы, что платформа.NET не предоставляет тому соглашению с файлами.

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

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

0
ответ дан 1 December 2019 в 09:34
поделиться

Я был бы использование Moq для этого . Необходимо было бы создать интерфейс и класс, который проксирует к реальной вещи, таким образом, Вы могли сделать, чтобы Moq создал экземпляр Вашего прокси (дразнивший экземпляр), но это - лучший способ протестировать эти виды вещей.

2
ответ дан 1 December 2019 в 09:34
поделиться

Я поддерживаю проект Jolt.NET на CodePlex, который содержит библиотеку для создания таких интерфейсов и их реализаций для вас. За дополнительной информацией обращайтесь к библиотеке Jolt.Testing .

0
ответ дан 1 December 2019 в 09:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: