我正在制作一个API,Laravel 5我正在测试它PHPUnit.我需要测试遗留功能的兼容性,这是一个XML POST.截至目前,我的第一个测试看起来像:
public function testPostMessages()
{
$response = $this->call('POST', 'xml');
$this->assertEquals(200, $response->getStatusCode());
}
Run Code Online (Sandbox Code Playgroud)
这传递得很好.我的列表中的下一步实际上是通过POST发送XML数据.所以对于我的第二次测试,我有:
public function testPostMessagesContent()
{
$response = $this->call('POST', 'xml');
$this->assertTrue(is_valid_xml($response->getContent()));
}
Run Code Online (Sandbox Code Playgroud)
此测试失败.但是,我没有发送我的XML数据.我如何发送XML?
现在,之后我需要添加功能以从请求中获取内容.我知道有一个Request对象我可以与之交互,但我不确切知道要调用哪种方法.如何从控制器中获取XML?
在此期间我能够得到一些结果.我目前的测试看起来像这样:
public function testPostMessagesContent()
{
$response = $this->call('POST', 'xml', array('key' => 'value'), array(), array(), array('content' => 'content'));
$this->assertContains('~', $response->getContent());
}
Run Code Online (Sandbox Code Playgroud)
我只有波浪号,因为我知道它不匹配,所以我可以看到整个响应.在XmlController.php我有:
class XmlController extends Controller {
public function index(Request $request)
{
return $request;
}
}
Run Code Online (Sandbox Code Playgroud)
我的输出PHPUnit如下:
1) XmlTest::testPostMessagesContent
Failed asserting …Run Code Online (Sandbox Code Playgroud) 我在使Eclipse Luna工作时遇到了一些麻烦.我从eclipse网站下载了tar.gz,并下载了Java JDK的tar.gz.我提取了所有内容并且Eclipse正常打开,但是当我尝试创建一个新项目时,它就崩溃了.在终端我跑了java -version,它告诉我我有1.8.0_25版本,所以我认为我没有java的问题.现在,如果我尝试制作任何类型的项目,就会发生这种情况.Eclipse打开向导以创建特定类型的新项目,然后整个应用程序崩溃.当我开始这样做时,我将它安装在KDE桌面下.当Eclipse崩溃时,我收到了消息 java: /build/buildd/gtk2-engines-oxygen-1.4.5/src/animations/oxygencomboboxdata.cpp:87??: void Oxygen::ComboBoxData::setButton(GtkWidget*): Assertion '!_button._widget' failed.因此,我决定安装xfce桌面以解决它,因为氧气是KDE主题.我卸载了eclipse并在xfce下重新安装它,我有相同的行为和相同的错误.当我从命令行运行eclipse时,我在启动时遇到此异常:
java.lang.ClassCastException: org.eclipse.osgi.internal.framework.EquinoxConfiguration$1 cannot be cast to java.lang.String
at org.eclipse.m2e.logback.configuration.LogHelper.logJavaProperties(LogHelper.java:26)
at org.eclipse.m2e.logback.configuration.LogPlugin.loadConfiguration(LogPlugin.java:189)
at org.eclipse.m2e.logback.configuration.LogPlugin.configureLogback(LogPlugin.java:144)
at org.eclipse.m2e.logback.configuration.LogPlugin.access$2(LogPlugin.java:107)
at org.eclipse.m2e.logback.configuration.LogPlugin$1.run(LogPlugin.java:62)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
Run Code Online (Sandbox Code Playgroud)
有没有人对还有什么想法尝试?
我在Ubuntu 14.04上运行PHP 5.5.9.我在写一个文件时遇到了麻烦.我觉得这必须是文件权限问题,因为我很确定代码是正确的.我登录的用户有权写入我尝试写入的文件夹,但我不确定localhost是否有.我不确定localhost用户的名称是什么才能使用chmod.我尝试使用chmod 777 -R /var/www/html,脚本仍然无法写入我的目标文件夹,其中包含路径/var/www/html/Projects/MD_ScrapingTool/files.这是我的代码:
$file = 'filetest.txt';
if($handle = fopen($file, 'w')) {
$content = "123\n456";
fwrite($handle, $content);
fclose($handle);
} else {
echo "Could not open file for writing.";
}
Run Code Online (Sandbox Code Playgroud) 我在使用Ajax方面遇到了一些麻烦.我的项目已进入Laravel 5并且正在运行Apache并且rewrite已启用,并且VerifyCsrfToken中间件已就绪.我正在尝试将POST请求发送到我项目中的另一条路径.这是我的Ajax的样子:
$.ajax({
url: '/add-device/',
type: 'POST',
data: form_data,
success: function(data)
{
console.log(data);
},
error: function(data)
{
console.log(data);
}
});
Run Code Online (Sandbox Code Playgroud)
当我单击触发此Ajax的按钮时,我得到了405: MethodNotAllowed响应.所以我进去了routes.php,我添加了一条GET路线.我还包括了我的POST路线:
Route::get('add-device', function()
{
return 'hello';
});
Route::post('add-device', [
'middleware' => 'auth',
'uses' => 'FormController@add_device'
]);
Run Code Online (Sandbox Code Playgroud)
我收到'hello'消息,所以这是作为GET而不是POST发送的.我试图使用$.post而不是$.ajax强制POST,但我仍然得到相同的行为.好的方法,这是我的.htaccess文件:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d …Run Code Online (Sandbox Code Playgroud) 令人惊讶的是,我在任何地方都找不到。我正在尝试使用phpThread类。为此,我必须安装pthreads。
如何安装pthreads上Debian 8?
在我开始之前,我想说我已经看过Failed断言HTTP状态是200而不是500以及Failed断言HTTP状态代码是200而不是500.不要让这些名字欺骗你; 他们是两个不同的职位.这两个帖子都超过9个月,没有好的答案.
我在测试路线方面遇到了一些麻烦.所以,我Laravel 5在Mac Mini上运行了一个新项目OS X Yosemite 10.10.2.我正在制作一个API.所以,我开始首先制作API的后端部分.我决定用PHPUnit这个项目来实现TDD.我的版本PHPUnit是4.0.20.我正在PHP 5.5.14和我使用的是打包服务器Laravel的artisan命令行工具.
现在,我开始确保我可以连接到服务器.所以,我的第一个测试看起来像:
public function testGetMessagesResponse()
{
$response = $this->call('GET', 'Messages');
$this->assertEquals(200, $response->getStatusCode());
}
Run Code Online (Sandbox Code Playgroud)
这传递得很好.但是,当我转到POST请求时,它失败了.这是我的第二次测试:
public function testPostMessagesResponse()
{
$response = $this->call('POST', 'Messages');
$this->assertEquals(200, $response->getStatusCode());
}
Run Code Online (Sandbox Code Playgroud)
此测试失败.这是输出的样子:
1) MessagesTest::testPostMessagesResponse
Failed asserting that 500 matches expected 200.
Run Code Online (Sandbox Code Playgroud)
在我的routes.php文件中,我确实注册了此路由:
Route::resource('Messages', 'MessagesController');
Run Code Online (Sandbox Code Playgroud)
在我的MessagesController中,我有所有必需的方法:
<?php namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class MessagesController extends Controller …Run Code Online (Sandbox Code Playgroud)