小编cre*_*lem的帖子

Symfony FormType测试处理EntityType

我对Symfony FormType测试提出了一个问题.http://symfony.com/doc/current/cookbook/form/unit_testing.html

在我的表单类型中,entity类型很常见.使用doctrine实体表单类型测试表单类型是可怕的.

这是我的表格领域.

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('products', 'entity', array(
        'class'     => 'AcmeDemoBundle:Product',
        'label'     => 'Product',
        'property'  => 'name',
        'required'  => false,
        'mapped'    => true,
        'multiple'  => true,
        'expanded'  => true
    ));
}
Run Code Online (Sandbox Code Playgroud)

这是该领域的模拟.

private function getEntityTypeMock()
{
    $entityRepositoryMock = $this->getMockBuilder('Doctrine\ORM\EntityRepository')
        ->disableOriginalConstructor()
        ->getMock()
    ;

    $entityRepositoryMock->expects($this->once())
        ->method('findAll')
        ->will($this->returnValue(array()));

    $classMetaDataMock = $this->getMockBuilder('Doctrine\ORM\Mapping\ClassMetadata')
        ->disableOriginalConstructor()
        ->getMock();

    $mockEntityManager = $this->getMockBuilder('Doctrine\ORM\EntityManager')
        ->disableOriginalConstructor()
        ->getMock();

    $mockEntityManager->expects($this->any())
        ->method('getClassMetadata')
        ->will($this->returnValue($classMetaDataMock));

    $mockEntityManager->expects($this->once())
        ->method('getRepository')
        ->will($this->returnValue($entityRepositoryMock));

    $mockRegistry = $this->getMockBuilder('Doctrine\Bundle\DoctrineBundle\Registry')
        ->disableOriginalConstructor()
        ->getMock();

    $mockRegistry->expects($this->any())
        ->method('getManagerForClass')
        ->will($this->returnValue($mockEntityManager));

    $mockEntityType = …
Run Code Online (Sandbox Code Playgroud)

php forms unit-testing symfony

16
推荐指数
1
解决办法
1487
查看次数

为什么特征类型 `Box<dyn Error>` 会出现“Sized is not Implemented”错误,但 `async fn() -> Result<(), Box<dyn Error>>` 却可以工作?

我\xe2\x80\x99ve以下简化代码。

\n
use async_trait::async_trait; // 0.1.36\nuse std::error::Error;\n\n#[async_trait]\ntrait Metric: Send {\n    type Output;\n    type Error: Error;\n\n    async fn refresh_metric(&mut self) -> Result<Self::Output, Self::Error>;\n}\n\n#[derive(Default)]\nstruct StaticMetric;\n\n#[async_trait]\nimpl Metric for StaticMetric {\n    type Output = ();\n    type Error = Box<dyn Error>;\n\n    async fn refresh_metric(&mut self) -> Result<Self::Output, Self::Error> {\n        Ok(())\n    }\n}\n\nstruct LocalSystemData<T> {\n    inner: T,\n}\n\nimpl<T> LocalSystemData<T>\nwhere\n    T: Metric,\n    <T as Metric>::Error: \'static,\n{\n    fn new(inner: T) -> LocalSystemData<T> {\n        LocalSystemData { inner }\n    }\n\n    async fn refresh_all(&mut self) -> Result<(), Box<dyn Error>> {\n        self.inner.refresh_metric().await?;\n        Ok(())\n    }\n}\n\n#[tokio::main]\nasync …
Run Code Online (Sandbox Code Playgroud)

rust

7
推荐指数
1
解决办法
8265
查看次数

使用 Rust 的正则表达式箱时如何转义转义的正则表达式字符?

我有一个包含许多转义字符的正"则表达式\。我总体测试了我的正则表达式,您可以找到我的工作现场演示。我将正则表达式转移到 Rust。这是一个不起作用的简化示例:

extern crate regex; // 1.1.0
use regex::Regex;

fn main() {
    let re = Regex::new(r#"123 \\""(\w+)"#).unwrap();
    let test = "123 \"PROPFIND\"";

    for cap in re.captures_iter(test) {
        println!("{}", &cap[1]);
    }
}
Run Code Online (Sandbox Code Playgroud)

操场

我的示例的输出是空的,但我期望PROPFIND

正则表达式文档向我指出了原始字符串文档。我尝试了不同的逃避技术,但不知道我哪里搞砸了。

regex escaping rust

6
推荐指数
1
解决办法
5476
查看次数

如何为生命周期为“a”的结构实现具有“静态生命周期”的特征?

我有一个trait Surface: 'static我想为 a 实现的struct Obj<'a>。该特征需要是'static因为我想将类型的对象存储Surface在 a 中Vec<Box<Surface>>

第一步我尝试了这个。

impl<'a> Surface for Obj<'a> {}
Run Code Online (Sandbox Code Playgroud)

这不会起作用,因为'static和之间的生命周期不匹配'a。换句话说:可以比现在Surface活得更久。我改变了我的实现如下。ObjSurface'static

impl<'a> Surface for Obj<'a> where 'a: 'static {}
Run Code Online (Sandbox Code Playgroud)

据我正确理解文档,我正在做的是,'a可以比'static. 我想要这个吗?

如果我转移 的所有权Obj<'a>,编译器会告诉我内部的可变引用Obj不会存在足够长的时间,并且仍然是借用的。

这是一个简短的例子。

trait Surface: 'static {}

struct Manager {
    storage: Vec<Box<Surface>>,
}

impl Manager {
    fn add(&mut self, surface: impl Surface) {
        self.storage.push(Box::new(surface));
    }
}

struct SomeOtherStruct …
Run Code Online (Sandbox Code Playgroud)

traits lifetime rust

5
推荐指数
1
解决办法
5276
查看次数

函数重载不起作用

我有一个c ++函数重载的问题.这是一个示例类.

class test
{
public:
  const char* data() const
  {
    std::cout << "const char* data() const" << std::endl;
    return data_;
  }

  char* data()
  {
    std::cout << "char* data()" << std::endl;
    return data_;
  }
private:
  char data_[512];
};
Run Code Online (Sandbox Code Playgroud)

在我的例子中,我有两个函数调用.

test t;
const char *t1 = t.data();
char* t2 = t.data();
Run Code Online (Sandbox Code Playgroud)

我的输出是char* data()两次.有人能解释我发生了什么事吗?为什么const char* data() const从未被召唤过?

感谢帮助.

c++

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

为什么`tokio::main`会报“处理时检测到循环”的错误?

我正在使用 Tokio 和async/.await来创建一个 UDP 服务器,我可以在其中以异步方式接收和发送数据。

SendHalf我的UDP套接字的跨多个任务共享。为此,我正在使用Arc<Mutex<SendHalf>>. 这就是为什么Arc<Mutex<_>>存在。

use tokio::net::UdpSocket;
use tokio::net::udp::SendHalf;
use tokio::sync::mpsc;
use std::sync::{Arc, Mutex};
use std::net::SocketAddr;

struct Packet {
    sender: Arc<Mutex<SendHalf>>,
    buf: [u8; 512],
    addr: SocketAddr,
}

#[tokio::main]
async fn main() {
    let server = UdpSocket::bind(("0.0.0.0", 44667)).await.unwrap();
    let (mut server_rx, mut server_tx) = server.split();
    let sender = Arc::new(Mutex::new(server_tx));
    let (mut tx, mut rx) = mpsc::channel(100);

    tokio::spawn(async move {
        loop {
            let mut buffer = [0; 512];
            let (_, …
Run Code Online (Sandbox Code Playgroud)

udp rust async-await rust-tokio

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

关于恒定时间算法和字符串比较的说明

我有一个问题要理解两种不同的字符串比较方法.给出以下函数来比较两个字符串.此功能在Symfony-Framework安全组件中用于比较用户登录过程中的密码.

/**
 * Compares two strings.
 *
 * This method implements a constant-time algorithm to compare strings.
 *
 * @param string $knownString The string of known length to compare against
 * @param string $userInput   The string that the user can control
 *
 * @return Boolean true if the two strings are the same, false otherwise
 */
function equals($knownString, $userInput)
{
    // Prevent issues if string length is 0
    $knownString .= chr(0);
    $userInput .= chr(0);

    $knownLen = strlen($knownString);
    $userLen = strlen($userInput); …
Run Code Online (Sandbox Code Playgroud)

php algorithm comparison

2
推荐指数
1
解决办法
592
查看次数