小编j0k*_*j0k的帖子

是否有可能使用PHPUnit模拟对象期望调用magic __call()方法?

我在测试中有一个模拟对象.现实对象,PageRepository,实现了使用__call()魔术方法,所以如果你调用$ pageRepository-> findOneByXXXX($ value_of_field_XXXX),它会在数据库中搜索该参数匹配的记录.

有没有办法模拟这种方法?

真正的方法调用看起来像这样:

$homepage = $pageRepository->findOneBySlug('homepage');
Run Code Online (Sandbox Code Playgroud)

测试看起来像这样:

$mockPageRepository->expects($this->any())
    ->method('findOneBySlug')
    ->will($this->returnValue(new Page()));
Run Code Online (Sandbox Code Playgroud)

但它不起作用 - PHPUnit没有发现方法调用.让它看到方法的唯一方法是在PageRepository中显式定义方法.

php phpunit magic-methods symfony

29
推荐指数
2
解决办法
7420
查看次数

您如何确定哪个验证器失败?

我正在使用页面,我得到一个Page.IsValid = false,我正在尝试确定哪个控件导致验证问题.

asp.net validation controls

29
推荐指数
3
解决办法
2万
查看次数

在Symfony2中生成追加查询字符串的路径

是否有任何工具可以为给定的路由和参数生成路径,自动附加查询字符串?作为临时解决方法,我正在使用自制宏:

{% macro path(route, args, with_query) %}
{% spaceless %}
    {% set with_query = with_query|default(false) and app.request.queryString %}
    {{ path(route, args) ~ (with_query ? '?' ~ app.request.queryString : '' ) }}
{% endspaceless %}
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)

在Symfony2/Twig中是否有一些本机功能可以做到这一点?

symfony twig

28
推荐指数
2
解决办法
3万
查看次数

将类应用于Symfony2表单标签

我正在尝试使用php模板在表单标签上的类上设置类.

这是我的代码:

<?php echo $view['form']->label($form['first_name'], 'First Name', array(
    'attr' => array('class' => 'control-label')
)) ?>
Run Code Online (Sandbox Code Playgroud)

但这是我的输出:

<label class="required" for="form_first_name">First name</label>
Run Code Online (Sandbox Code Playgroud)

我可以找到如何使用twig,但不是PHP的例子.

symfony-forms symfony

28
推荐指数
1
解决办法
3万
查看次数

使用PHP中的正则表达式验证电子邮件

我对正则表达式很新.我正在用PHP开发一个项目,我需要验证电子邮件地址.在这个网站和谷歌搜索后我发现以下正则表达式说它应该效果最好.

if (preg_match("/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/iD", strtolower($mail_address))) {
    echo "valid email";
}
Run Code Online (Sandbox Code Playgroud)

但是当我使用它时,我得到错误说,

"Warning: preg_match(): No ending delimiter '/' found"
Run Code Online (Sandbox Code Playgroud)

这段代码有什么问题?

php regex email

28
推荐指数
4
解决办法
8万
查看次数

如何在4.2之前版本的Android上处理RTL语言?

背景

TextView始终存在RTL(从右到左)语言的问题.由于我只知道如何阅读希伯来语(除了英语),我将讨论它的问题:

  • 文本对齐(我不是在谈论引力).作为一种RTL语言,希伯来语从右到左放置单词(与英语相反).

    为了展示它是多么令人讨厌,想象一下,而不是展示"Hello world".你通常得到".Hello world".如果你只用一个句子就可以很容易地解决这个问题,但是当有多个标点字符时会更难.

  • 元音位置.希伯来语不需要元音来阅读文本,但有时没有它们就很难阅读(特别是圣经).对于元音,希伯来语有所谓的"NIKUD",它实际上就像字母内部的点.Android中的问题是它们通常位于错误的位置.

    为了展示它是多么令人讨厌,想象一下,而不是展示"Hello world".你通常得到".eHlol owrld".即使你试图修复它(把元音总是放在当前元素之后的一个字符),字母中的位置也不正确(想象"Hello"中的"e"就像"H"之上的那样,例子).

仅在版本4.2(在此处阅读,在"原生RTL支持"下),谷歌已经修复了所有希伯来语相关问题(或者至少看起来如此).

问题

希伯来语的问题导致每个以色列航空公司和每个定制ROM制造商都有自己的解决方案来解决不同的问题,这使得在4.2之前的设备上处理RTL文本几乎是不可能的.

如果文本包括希伯来语和英文字母,事情会变得更加令人沮丧.

我试过的

我已经阅读了很多关于这些问题的网站,我尝试了很多解决方案,没有一个解决了所有设备上的问题:

这个问题

这个问题有一个明确的解决方案吗?

我认为最好的事情是因为Android 4.2解决了这个问题,并且Android是开源的,我们应该将其TextView导入到我们可以使用的库中,但谷歌还没有提供这样的库.

android hebrew textview android-webview right-to-left

28
推荐指数
1
解决办法
1万
查看次数

为什么我的"存储不可用".中止命中.使用Google Analytics?

我正在设置新的Google Analytics跟踪代码.

<script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

      ga('create', 'MYUACODE', 'MYDOMAIN');
      ga('send', 'pageview', {
          'page': '/setup',
          'title': 'Setup Page'
        });

    </script>
Run Code Online (Sandbox Code Playgroud)

我在HEAD标签里面有这个,因为Google告诉你这样做显然MYUACODE和MYDOMAIN是我页面中真正的变量:)

但是,当我使用谷歌浏览器运行此操作并打开Goog​​le Analytics Debug扩展程序时,收到以下消息:

Registered new plugin: "linker"       analytics_debug.js:5
Creating new tracker: t0              analytics_debug.js:5
New visitor. Generating new clientId  analytics_debug.js:5
Storage not available. Aborting hit.  analytics_debug.js:5
Run Code Online (Sandbox Code Playgroud)

它似乎正确启动并开始设置项目,但随后它说存储不可用,似乎没有任何东西得到谷歌.

现在,如果我删除所有这些代码并返回原始的Google跟踪代码,它运行正常,我似乎无法正确启动这种新风格.

有什么想法吗?救命?提前致谢

debugging google-analytics

28
推荐指数
3
解决办法
1万
查看次数

如何在功能测试中模拟Symfony 2服务?

我有symfony服务,它在某些方法中使用redis连接,但在所有方法中都没有.

class ServiceA
{
    private $redis;

    public function __construct($redis)
    {
        $this->redis = $redis;
    }

    public function getRequest($param1, $param2)
    {
    $result = $param1+ $param2;
        return $request;
    }

    .. other methods which use $redis connection
}
Run Code Online (Sandbox Code Playgroud)

我正在为仅使用getRequest方法的代码编写功能测试(此方法不需要redis连接),但是当构造函数将连接作为参数时,当我运行test时,它尝试连接redis服务器.

如何编写完全不使用redis连接的模拟服务并忽略原始构造函数.

我正在尝试下面提到的方法,但没有成功.我仍然尝试连接redis,尽管我已经禁用了原始构造函数.

http://blog.lyrixx.info/2013/04/12/symfony2-how-to-mock-services-during-functional-tests.html

$serviceA = $this->getMockBuilder('ServiceA')
    ->disableOriginalConstructor()
    ->getMock();

static::$kernel->getContainer()->set('my_bundle.service.a', $serviceA);
Run Code Online (Sandbox Code Playgroud)

php phpunit unit-testing mocking symfony

28
推荐指数
2
解决办法
3万
查看次数

从C#中的图像EXIF获取GPS数据

我正在开发一个系统,允许使用ASP.NET C#将图像上传到服务器.我正在处理图像,一切都很好.我设法找到一个方法来读取创建日期的EXIF数据,并将其解析为DateTime.这也很有效.

我现在正试图从EXIF读取GPS数据.我想要捕捉纬度和经度数字.

我使用此列表作为EXIF数据的参考(使用属性项的数字)http://www.exiv2.org/tags.html

这是捕获创建日期(工作日期)的方法.

public DateTime GetDateTaken(Image targetImg)
{
    DateTime dtaken;

    try
    {
        //Property Item 306 corresponds to the Date Taken
        PropertyItem propItem = targetImg.GetPropertyItem(0x0132);

        //Convert date taken metadata to a DateTime object
        string sdate = Encoding.UTF8.GetString(propItem.Value).Trim();
        string secondhalf = sdate.Substring(sdate.IndexOf(" "), (sdate.Length - sdate.IndexOf(" ")));
        string firsthalf = sdate.Substring(0, 10);
        firsthalf = firsthalf.Replace(":", "-");
        sdate = firsthalf + secondhalf;
        dtaken = DateTime.Parse(sdate);
    }
    catch
    {
        dtaken = DateTime.Parse("1956-01-01 00:00:00.000");
    }
    return dtaken;
}
Run Code Online (Sandbox Code Playgroud)

以下是我尝试为GPS做同样的事情..

public float GetLatitude(Image …
Run Code Online (Sandbox Code Playgroud)

c# gps exif latitude-longitude

27
推荐指数
5
解决办法
3万
查看次数

在Windows 7中使用C#运行Selenium测试期间出现"IEDriverServer不存在"错误

我正在使用WebDriver和C#开发Automation框架.它与Firefox一起正常工作,但不适用于IE.

我收到以下错误:

IEDriverServer.exe不存在 - 文件c:\ users\administrator\documents\visual studio 2010\projects\TestProject1\TestProject1\_bin\Debug\IEDriverServer.exe不存在.该驱动程序可以从http://code.google.com/p/selenium/downloads/list下载

我使用的是IE 9和Windows 7.

IWebDriver driver = new InternetExplorerDriver();
driver.Navigate().GoToUrl("http://www.google.co.uk");
IWebElement queryBox = driver.FindElement(By.Name("q"));
queryBox.SendKeys("The Automated Tester");
queryBox.SendKeys(Keys.ArrowDown);
queryBox.Submit();
Run Code Online (Sandbox Code Playgroud)

也可以看看 这个截图.

c# internet-explorer selenium-rc windows-7 selenium-webdriver

27
推荐指数
3
解决办法
4万
查看次数