我想测试这个destroy动作:
def destroy
@comment = Comment.find(params[:id])
@comment_id = @comment.id
if @comment.delete_permission(current_user.id)
@remove_comment = true
@comment.destroy
else
@remove_comment = false
head :forbidden
end
end
Run Code Online (Sandbox Code Playgroud)
我的规格如下:
describe "DELETE 'destroy'" do
describe 'via ajx' do
it "should be successful if permission true" do
comment = Comment.stub(:find).with(37).and_return @comment
comment.should_receive(:delete_permission).with(@user.id).and_return true
comment.should_receive(:destroy)
delete 'destroy', :id => 37
end
end
end
Run Code Online (Sandbox Code Playgroud)
我总是得到:
comment.should_receive....
expected: 1 time
received: 0 times
Run Code Online (Sandbox Code Playgroud)
原因:从不调用delete_permission?你对如何测试它有什么建议吗?
我有多个rails应用程序与同一个后端交谈,我希望他们分享一些迁移.
我设置了一个rails引擎(带有enginex),我可以共享任何东西(控制器,视图,模型......)但没有迁移.我做不到!
我尝试创建一个文件db/migrate/my_migration.rb,但在我的主应用程序中,如果我这样做:
rake db:migrate
Run Code Online (Sandbox Code Playgroud)
它不加载它们.
经过一番Google上搜寻它似乎有一些最近的工作在这,似乎这已经合并轨主.我用rails 3.0.3你有没有办法让这个工作?
谢谢 !
假设我有很多多边形,构造多边形的最佳算法是什么 - 可能是所有这些多边形的并集孔?
为了我的目的,你可以想象每个多边形作为一个拼图块,当你完成它们你会得到一个很好的图片.但问题是,缺少一小部分(比如<5%)的拼图,你仍然要求尽可能完整地形成一幅画面; 这是多边形(或多边形) - 可能有孔 - 我想形成.
我天真的方法是取两个多边形,合并它们,然后取另一个多边形,将它与两个多边形的并集联合起来,然后重复这个过程,直到每个单元都结合在一起.然后我将遍历联合多边形列表并检查是否仍然可以组合一些多边形,并且我将重复此过程,直到获得满意的结果.
但这似乎是一种非常天真的方法.我只是想知道还有其他更好的算法吗?
一些有效的工作表名称如下所示
t'#3cfbsdjfdsjb''''''''^^^^^^&&'!$C$8:$N$23
1'!$E$13:$H$19
!'!$B$7:$E$16
@@@@@@@'!$B$7:$K$21
!$'!$B$12:$M$17
Run Code Online (Sandbox Code Playgroud)
我在用
string pattern =@"[^<]+?\!\$[A-Z]+\$[0-9]+"
Regex r = new Regex(Constants.CELL_REFERENCE_PATTERN);
Match m = r.Match(selectedVal);
if (m.Success) return true;
else return false;
Run Code Online (Sandbox Code Playgroud)
但它失败了
“t'#3cfbsdjfdsjb''''''''^^^^^^&&'!$C$8:$N$23,p,mv”或“sheet1!$A1”。
提前致谢
我使用Zend框架和Doctrine.在许多项目中,业务逻辑内置于控制器中.这种方法对我来说似乎不对.
我见过的最好的设置是使用服务层,这就是编写业务逻辑的地方.我所要做的就是创建一个表单,验证它,并在服务层中使用一些业务逻辑.结果验证,业务逻辑和使用一种方法(例如:newProduct($ postData)).
在MVC中组织业务逻辑的正确方法是什么?也许我需要阅读一些书籍,或者看一些源代码示例.
圣诞快乐!
我正在读"信号量小书".书中有一个C语言的实现,我并不完全理解.请参阅下面的代码.有这个唤醒变量.作者解释说:
唤醒计算未决信号的数量; 也就是说,已被唤醒但尚未恢复执行的线程数.唤醒的原因是为了确保我们的信号量具有第4.3节中描述的属性3
和
属性3:如果在线程执行信号时有线程在等待信号量,则必须唤醒其中一个等待线程.
好的,我想我理解了这个属性的含义.其中一个等待线程应该获取互斥锁而不是另一个(例如信令线程).如果我错了,请纠正我.我不明白的是这个机制如何保证这个属性.我说这家酒店不保证.非等待进程仍有可能获得互斥锁.我错过了什么?
typedef struct {
int value, wakeups;
Mutex *mutex;
Cond *cond;
} Semaphore;
// SEMAPHORE
Semaphore *make_semaphore (int value)
{
Semaphore *semaphore = check_malloc (sizeof(Semaphore));
semaphore->value = value;
semaphore->wakeups = 0;
semaphore->mutex = make_mutex ();
semaphore->cond = make_cond ();
return semaphore;
}
void sem_wait (Semaphore *semaphore)
{
mutex_lock (semaphore->mutex);
semaphore->value--;
if (semaphore->value < 0) {
do {
cond_wait (semaphore->cond, semaphore->mutex);
} while (semaphore->wakeups < 1);
semaphore->wakeups--;
}
mutex_unlock (semaphore->mutex);
} …Run Code Online (Sandbox Code Playgroud) 我在visual studio 2010中编写单元测试.
为了测试一些功能,我添加了一个带有testfiles的文件夹.
我需要以编程方式获取此文件夹,而不需要字符串中的硬路径.
该文件夹包含在 <projectDirectory>/TestFiles
我试过用AppDomain.CurrentDomain.BaseDirectory.这只有在我用resharper运行我的单元测试时才有效.
结果是<projectDirectory>/bin/debug这样我可以很容易地去TestFiles.
如果我使用visual studio运行测试,BaseDirectory是:
<sameFolderAsSolutionFile>\TestResults\<username>_<pcname> <datatime>\Out
我已将解决方案文件移至另一个文件夹.所以我的项目与我的解决方案文件不在同一个文件夹中.
例:
<sameFolderAsSolutionFile> = C:\SolutionFiles
<projectDirectory> = C:\Projects\MyProject
有人能告诉我如何在不使用硬编码字符串的情况下获取测试文件的路径吗?
编辑
我还没有找到解决方案.
Visual Studio正在使用另一个构建文件夹进行测试.因此,通常构建到bin文件夹中的所有内容都将构建到另一个文件夹中以进行测试.
我的TEMP-SOLUTION
我在我的测试项目中添加了一个App.config文件.在此配置文件中,我添加了一个包含测试文件所需路径的设置:
<appSettings>
<add key="TestFiles" value="C:\Projects\MyProject\TestFiles"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud) 我从我的HTML页面获取一个字符串到我的Java HTTPServlet.根据我的要求,我得到显示中文字符的ASCII码:
"可以告诉我" (没有空格)
如何将此字符串转换为Unicode?
HTML代码:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Find information</title>
<link rel="stylesheet" type="text/css" href="layout.css">
</head>
<body>
<form id="lookupform" name="lookupform" action="LookupServlet" method="post" accept-charset="UTF-8">
<table id="lookuptable" align="center">
<tr>
<label>Question:</label>
<td><textarea cols="30" rows="2" name="lookupstring" id="lookupstring"></textarea></td>
</tr>
</table>
<input type="submit" name="Look up" id="lookup" value="Look up"/>
</form>
Run Code Online (Sandbox Code Playgroud)
Java代码:
request.setCharacterEncoding("UTF-8");
javax.servlet.http.HttpSession session = request.getSession();
LoginResult lr = (LoginResult) session.getAttribute("loginResult");
String[] question = request.getParameterValues("lookupstring");
Run Code Online (Sandbox Code Playgroud)
如果我打印问题[0],那么我得到这个值:"可以告诉我"
java -Djava.library.path=. TestJNI
>>>>
Exception in thread "main" java.lang.UnsatisfiedLinkError: TestJNI.calibrate([D[DII)[D
at TestJNI.calibrate(Native Method)
at TestJNI.main(TestJNI.java:61)
Run Code Online (Sandbox Code Playgroud)
我知道库正在加载,否则错误说无法找到校准库.上述错误是什么意思?
编辑
这是我的实施 -
JNIEXPORT jdoubleArray JNICALL Java_TestJNI_cailbrate (JNIEnv * env, jobject jobj, jdoubleArray rtt, jdoubleArray distance ,jint activecount,jint passivecount) {
jdoubleArray jresult = (*env)->NewDoubleArray(env,3);
.......
return jresult;
}
Run Code Online (Sandbox Code Playgroud)
参数声明是否正确?
是否有任何设计模式或其他方法来替换大量的嵌套循环?唯一的目的是提高性能.
例如
for (int i=0; i<2000; i++)
{
for (int j=0; j<2000; j++)
{
for (int k=0; k<2000; k++)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)