我试图为http请求编写回归测试。它是一个购物车/结账控制器。
在某些时候,控制器会检查是否有一个session_id
的购物车等于请求的会话ID。有点像Cart::whereSessionId(session()->getId())->first()
。
不幸的是,请求的会话ID与为实际测试生成的会话ID不同,这意味着即使我使用工厂创建像这样的购物车:$cart = factory(Cart::class)->create(['session_id' => session()->getId()])
它也永远不会找到记录。
那么如何设置请求的会话ID?
答案 0 :(得分:1)
这可能接近黑客,但您可以在运行测试时设置会话令牌,如下所示:
$sessionId = session()->getId();
$cart = factory(Cart::class)->create(['session_id' => $sessionId])
$response = $this->withSession(['_token' => $sessionId])
->call('GET', action('CartController@method'));
控制器中的会话ID与测试方法中的会话ID相同。
答案 1 :(得分:0)
我知道这个线程已经存在了一段时间,并且对OP毫无帮助,但是我今天遇到了这个问题,以为我会发布我的解决方案,将其添加到您的测试方法中:
for image 0 angle: 0.7416666666666667, pred: [0.7266706]
for image 1 angle: 0.8111111111111111, pred: [0.8449749]
for image 2 angle: 0.7777777777777778, pred: [0.84269005]
for image 3 angle: 0.12222222222222222, pred: [0.14173588]
for image 4 angle: 0.7388888888888889, pred: [0.730219]
for image 5 angle: 0.9694444444444444, pred: [0.9117564]
for image 6 angle: 0.075, pred: [0.07597628]
for image 7 angle: 0.29444444444444445, pred: [0.1829494]
for image 8 angle: 0.10277777777777777, pred: [0.12209181]
for image 9 angle: 0.21388888888888888, pred: [0.31544465]
然后,每当您使用Session::shouldReceive('getId')
->andReturn('my_mocked_session');
时,它将返回'my_mocked_session'。