X1 Carbon 2016款可以加硬盘么

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了 X1 Carbon 2016款可以加硬盘么相关的知识,希望对你有一定的参考价值。

参考技术A 不可以加,可以换 2280m.2的都行 pci-e和sata3的都行 参考技术B

如何模拟 Carbon 方法链

【中文标题】如何模拟 Carbon 方法链【英文标题】:How to mock Carbon method chain 【发布时间】:2014-06-07 05:49:40 【问题描述】:

我正在尝试模拟 Carbon::parse($date)->format("Y"),但我不知道该怎么做。

这是我目前所拥有的:

public function testGetYear2014FromPost()

    $mock = Mockery::mock("DateFormatter");
    $mock->shouldReceive("parse")
        ->with("2014-02-08 16:23:33")
        ->once()
        ->andReturn($mock);
    $mock->shouldReceive("format")
        ->with("Y")
        ->once()
        ->andReturn("2014");

    $this->article->setDateFormatter($mock);

    $this->assertEquals("2014", $this->article->getYear());

【问题讨论】:

【参考方案1】:

我知道只有两种方法可以像这样模拟方法链:

    找出每个方法的返回值并模拟:

$mock1 = Mockery::mock("SomeOtherClass")
$mock1->shouldReceive("format")->with("Y")->once()->andReturn("2014");

$mock0 = Mockery::mock("DateFormatter")
$mock0->shouldReceive("parse")
    ->with("2014-02-08 16:23:33")->once()->andReturn($mock1);

您必须弄清楚 parse 方法返回什么类,然后将其设置为模拟对象并返回它。

    如果您不想费心找出返回的类是什么,您可以使用stdClass 对象来伪造它:

$mock1 = new stdClass;
$mock1->format = function ($f)  return "2014"; ;

$mock0 = Mockery::mock("DateFormatter")
$mock0->shouldReceive("parse")
    ->with("2014-02-08 16:23:33")->once()->andReturn($mock1);

这两种方法之间有一个重要的区别:

第一种方法需要做更多的工作,但它允许您为 Mockery 设置准确的预期,这将使 PHPUnit 和 Mockery 在未满足预期时正确处理事情。

第二个更容易一些,但你没有得到期望处理。但是,当您的期望未得到满足时,可以通过抛出异常来伪造这一点,如下所示:

$mock1 = 新标准类; $mock1->格式=函数($f) 如果 ($f!="Y") 抛出新异常; 返回“2014”; ; $mock0 = 嘲弄::mock("DateFormatter") $mock0->shouldReceive("解析") ->with("2014-02-08 16:23:33")->once()->andReturn($mock1);

然后你可以在你的方法中添加一个@expectedException Exception docblock 来测试它。

【讨论】:

以上是关于 X1 Carbon 2016款可以加硬盘么的主要内容,如果未能解决你的问题,请参考以下文章

联想ThinkPad X1 Carbon 能加硬盘吗?

Thinkpad X1 Carbon 2016可以增加或者更换SSD吗

Thinkpad X1 Carbon 主板那个是啥接口,还可以加硬盘吗?

X1 CARBON 4代(2016)可否硬盘扩展?

thinkpad carbon x1可以装固态硬盘没

thinkpad X1 carbon 的固态硬盘可以升级吗?