Метод модульных тестов для размера файла более 40 МБ

Мой DTO объявлен как ниже

    [MaxLength(maxFileSize, ErrorMessage = "Max Byte Array length is 40MB.")]
    public byte[] DocumentFile { get; set; }

Мне нужно написать метод модульного теста для размера файла более 40 МБ.

Как DocumentFile свойство объявлено как тип массива byte[], я не могу присвоить какое-либо значение DocumentFile имущество.

Может кто-нибудь, пожалуйста, предложите мне, как я могу написать метод модульного тестирования для этого сценария.

2 ответа

Ни у компилятора, ни во время выполнения нет проблем с массивом размером 40 МБ +1 байт:

namespace so42248850
{
    class Program
    {
        class someClass
        {
            /* [attributes...] */
            public byte[] DocumentFile;
        }

        static void Main(string[] args)
        {
            var oversized = new byte[41943041]; /* 40 MB plus the last straw */
            try
            {
                var mock = new someClass
                {
                    DocumentFile = oversized
                };
            } 
            catch(Exception e)
            {
                /* is this the expected exception > test passes/fails */
            }
        }
    }
}

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

Что-то вроде

[TestMethod]
[ExpectedException(typeof(BlaBlaException), "Exceptiion string")]
public void DocumentFile_set_WhenDocumentFileSetOver40Mb_ShouldThrowExceptionBlaBla {
   DocumentFile = new byte [45000000];
}
Другие вопросы по тегам