小编rob*_*rtw的帖子

为什么我不能将TObjectList <S:T>传递给期望TObjectList <T>的函数?

我的代码有问题,它使用泛型类型.为什么编译器不知道传递的list(Result)是一个TObjectList<TItem>(TItemTin的类型TItems)?

接口:

type
   TItem = class
end;

type
  IItemsLoader = interface
    procedure LoadAll(AList : TObjectList<TItem>);
end;

type
  TItemsLoader = class(TInterfacedObject, IItemsLoader)
public
  procedure LoadAll(AList : TObjectList<TItem>);
end;

type
  IItems<T : TItem> = interface
  function LoadAll : TObjectList<T>;
end;

type
  TItems<T : TItem> = class(TInterfacedObject, IItems<T>)
  private
    FItemsLoader : TItemsLoader;
  public
    constructor Create;
    destructor Destroy; override;
    function LoadAll : TObjectList<T>;
end;
Run Code Online (Sandbox Code Playgroud)

执行:

procedure TItemsLoader.LoadAll(AList: TObjectList<TItem>);
begin
  /// some stuff with AList …
Run Code Online (Sandbox Code Playgroud)

delphi generics tobjectlist

8
推荐指数
1
解决办法
937
查看次数

控制器单元测试在slim3

首先,我想说 - 我是用PHP(phpunit)进行单元测试的新手.在我的新项目(slim3框架)中,我想测试我的控制器,例如LoginController.

我的想法是(在单元测试方法中)

  • 创建实例 LoginController
  • 在控制器(DI)中模拟一些服务
  • 作为请求响应的执行方法(在我的控制器方法中__invoke)

我的问题是关于__invoke方法的参数.在Slim3中,可调用的请求方法有两个第一个参数:

RequestInterface $requestResponseInterface $response

如何在单元测试类中创建此参数?我正在寻找这个问题的一些例子,但没有成功.

有什么建议?

我在Slim3测试中发现了一些模拟请求的代码:

protected function requestFactory()
{
    $uri = Uri::createFromString('https://example.com:443/foo/bar?abc=123');
    $headers = new Headers();
    $cookies = array(
        'user' => 'john',
        'id' => '123',
    );
    $env = Slim\Http\Environment::mock();
    $serverParams = $env->all();
    $body = new Body(fopen('php://temp', 'r+'));
    $request = new Request('GET', $uri, $headers, $cookies, $serverParams, $body);

    return $request;
}
Run Code Online (Sandbox Code Playgroud)

但我不确定这是好方法.

谢谢你的帮助

phpunit slim slim-3

8
推荐指数
1
解决办法
4091
查看次数

获取可用的显示分辨率列表

是否可以像显示首选项一样获得分辨率列表?见附图.我正在使用Delphi XE3

我可以枚举DeviceModeList(来源:http://www.delphifeeds.com/go/s/96231)

var
   cnt : Integer;
   DevMode : TDevMode;
 begin
   cnt := 0;
   while EnumDisplaySettings(nil,cnt,DevMode) do
   begin
     with Devmode do
      ListBox1.Items.Add(Format('%dx%d %d Colors', [dmPelsWidth,dmPelsHeight,Int64(1) shl dmBitsperPel])) ;
     Inc(cnt) ;
   end;
 end; 
Run Code Online (Sandbox Code Playgroud)

第一个问题:

有结果我无法使用Windows显示首选项设置.当然我可以减少<800x600 - 但这是一个糟糕的主意:)

下一个问题:

没有关于分辨率是否显示为灰色的信息(如显示首选项)

在解决这两个问题时,我将不胜感激.

最好的祝福!

显示首选项

delphi

6
推荐指数
0
解决办法
188
查看次数

标签 统计

delphi ×2

generics ×1

phpunit ×1

slim ×1

slim-3 ×1

tobjectlist ×1