laravel 使用 faker 大文本进行测试

问题描述 投票:0回答:2

我正在测试一个表单,用户必须在其中引入一些文本,比如说 100 到 500 个字符。

我尝试模拟用户输入:

$this->actingAs($user)
->visit('myweb/create')
->type($this->faker->text(1000),'description')
->press('Save')
->see('greater than');

但看起来 faker 正在创建一个相当小的文本,因此测试没有通过。

事实上,参数指定了最大字符数,而不是最小字符数。我怎样才能告诉faker最小值?

laravel testing phpunit faker
2个回答
4
投票

Faker API 不为您提供设置最小字符数的选项。所以你最好使用其他东西,例如 Laravel 的

str_random(1000)
辅助函数将创建一个由 1000 个字符组成的字符串。


0
投票

我遇到同样问题时遇到了这个问题。

  1. str_random()
    所回答的现在是一个未定义的函数。在 L11 中使用字符串助手
    Str::random($length)
    ,就像在 文档中一样。

  2. faker->words(500)
    将生成一个包含指定数量的随机单词的数组,并且可以选择提供第二个布尔参数。当
    true
    时,将返回字符串而不是数组。您可以在here查看文档。所以:

faker->words(500)
// ['word1', 'word2', 'word3', ...]

faker->words(500, true)
// 'word1 word2 word3 ...'

.:

words()
将生成带有
500
字符的
N
单词。

  1. 如果您想要
    确切的字符数
    ,请使用lexify。这将生成一个字符串,其中所有
    ?
    字符都替换为拉丁字母表中的随机字母。这是docs。所以:
faker->lexify(str_repeat('?', 500))
// 'abcdefghijklmnopqrstuvwxyz...'
  1. 为了实现你真正想要的,你有
    realTextBetween()
    。这将生成 2 个数字之间的文本。这是文档。所以:
realTextBetween($minNbChars = 160, $maxNbChars = 200, $indexSize = 2)
// "VERY short remarks:, and she ran across the garden, and I had not long to doubt, for the end of the bottle was NOT marked 'poison,' it is right?' --'In my youth,' Father William replied to his ear."

.:请注意,添加了非字母数字字符,例如符号、标点符号或其他特殊字符,例如

, : - ' ? .
等..

© www.soinside.com 2019 - 2024. All rights reserved.