在模型的工厂模拟上强加接口或契约的最早的方法是什么?
例如,假设我有一个模型Dog。我使用一个工厂来模拟它,并为它编写一个测试。我想确保如果我模拟一个不符合约定/接口的实例,就会抛出一个错误。
\App\Dog.php:
class Dog extends Model
{
protected $table = 'dogs';
protected $fillable = ['name', 'breed' ]; // Dogs must have both of these
}
数据库/工厂/ModelFactory.php
$fac
我试图在Laravel 5中对我的控制器进行单元测试,但是有一些严重的问题困扰着我。如果我真的想要进行独立的单元测试,我似乎不得不用大量的短函数和静态类交换依赖注入的等价物。
首先,我在中看到的“单元测试”对我来说不是单元测试。这看起来更像是功能测试。我无法测试隔离的控制器函数,因为我必须遍历整个框架,如果有任何代码与我的数据库进行交互,我将需要实际地为我的数据库添加种子。
因此,反过来,我想测试与框架隔离的控制器。然而,事实证明,这是相当困难的。
让我们看一下这个示例函数(为了解决这个问题,我已经排除了这个函数的某些部分):
public function postLogin(\Illumi
我有一些类可以创建用户“集成”并使用外部API检查API凭据:
class IntegrationService
{
public function create(array $params)
{
$api = new IntegrationApi();
if (!$api->checkCredentials($params['api_key'])) {
throw new \Exception('Invalid credentials');
}
/
当我运行我的控制器得到这个错误的时候,我正在尝试在codeigniter中设置mongo db。我已经在stackoverflow上尝试了模拟错误,但没有成功。下面是错误:
Fatal error: Class 'MongoClient' not found in /var/www/html/grant/application/libraries/Mongo_db.php on line 216
A PHP Error was encountered
Severity: Error
Message: Class 'MongoClient' not found
这是我的类图
这些类的实现如下所示
人类
class Person
{
public $name='person'
public function speak()
{
echo 'person speek'
}
}
学生班
class Student Extends Person
{
public $studentNumber;
public function learn()
{
echo 'learn';
}
}
教授班
class
我一直试图在我的Laravel 6单元测试中模拟一个服务类,但是调用正在转向真正的方法,而不是模拟响应。这是我想嘲弄的人物班-
class People
{
public static function checkCredentials($username, $password) {
// some code, which is not supposed to execute while unit testing.
}
}
负责执行这一任务的控制人员是-
class AuthController extends Controller {
public
我正在我的控制器上做一个PHPUnit,我似乎不能正确地模拟请求。
这是控制器:
use Illuminate\Http\Request;
public function insert(Request $request)
{
// ... some codes here
if ($request->has('username')) {
$userEmail = $request->get('username');
} else if ($request->has('email')) {
来自CodeIgniter的Datamapper ORM,我仍然在尝试理解Laravel的雄辩的ORM。
假设我有一个帐户和一个用户表(简化):
ACCOUNT
- id
- name
USER
- id
- account_id
- username
一个账号有多个用户。一个用户属于一个帐户。所以我们处理的是一对多的关系。所有的东西都已经在模型中设置好了。
在CodeIgniter的Datamapper中,我将执行以下操作来从任何给定的ID获取用户,同时检查该用户是否与当前帐户相关:
$u = new User();
$u->where('username', $us
你好,我是从Codeigniter来的Laravel的新手
我尝试通过迁移构建我的数据库,但是我看到Github中的一些脚本以不同的方式使用命名空间,例如:
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
另一个脚本使用:
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprin
我正在使用Paypal Api开发一个应用程序,但webhooks模拟器无法工作。当我尝试发送一个事件时,Paypal说它已经排队了,"Your event has been successfully queued at October 20 2015, 17:36:26",但当我尝试调试它(使用Laravel的monolog)时,什么也没有显示。我正在使用https与第三方证书和凭据工作(我可以创建订单),webhooks需要任何其他配置吗?它们是查看订单状态的唯一方法吗?Paypal文档有点混乱...谢谢!
我正在尝试使我的AuthController可测试。我首先注入Auth类,这样我就可以在测试中模拟它:
public function __construct(Auth $auth)
{
$this->auth = $auth;
}
然后,当我检查登录是否成功时,我会使用注入的类:
public function postLogin()
{
// instead of Auth::attempt(Input::all())
if ($this->auth->attempt(Input::all()) {
return 'you
我使用了CodeIgniter一段时间,现在搬到了Laravel。
在CodeIgniter中创建控制器时,它会自动使用/控制器/方法作为路由。例如:
class Users extends CI_Controller {
public function index() {
// Something here
}
public function view() {
// Something here
}
}
现在我们可以去http://example.com/users/index或http://example.com/users
我如何在模型上正确地模拟/存根一个方法(在laravel中)?目前我正在尝试...
$mock = Mockery::spy(Organisation::class);
$mock->shouldReceive('findByCustomerId')->once();
被测试的代码是
use App\Organisation;
...
public function handle()
{
$org = Organisation::findByCustomerId(1234);
然而,当我运行测试时,我得到了一个错误的Call to undefined me
在Laravel 5中,请求对象的方法注入似乎比使用请求外观更可取。
<?php namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HomeController extends Controller
{
public function index(Request $request)
{
$email = $request->input('email');
// OR
$email = $request->g