如何验证是否未在对象的依赖项上调用方法?
例如:
public interface Dependency {
void someMethod();
}
public class Foo {
public bar(final Dependency d) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
通过Foo测试:
public class FooTest {
@Test
public void dependencyIsNotCalled() {
final Foo foo = new Foo(...);
final Dependency dependency = mock(Dependency.class);
foo.bar(dependency);
**// verify here that someMethod was not called??**
}
}
Run Code Online (Sandbox Code Playgroud) 我想在自己的进程组中启动一个进程(或者,一旦启动就更改其组)并且:
Ctrl+Ckill命令终止组中的所有进程.注意:我试过setsid prog [args]但是进程没有响应来自终端的Ctrl + C,也没有得到新的进程组ID.
我也试图通过Perl的改变进程组setpgrp($pid, $pid)和POSIX::setpgid($pid, $pid),都无济于事.
编辑:更大的问题:
我有一个进程(单线程;让我们称之为"多产"进程P)同步启动许多子进程(一个接一个;当前一个子进程终止时它启动一个新进程).从终端,我希望能够杀死P它下面的进程树.要做到这一点,我可以简单地安排杀死组中的进程P.但是,默认行为是P在其父进程的组中.这意味着P如果我杀死了P组中的所有进程,那么父级将被杀死,除非我拥有P它的树并且它的树在他们自己的组中.
我的目的是杀死P它下面的树,但不是P父母.另外,我无法修改P代码本身.
Moq默认不进行递归模拟.也就是说,对于对模拟没有期望的成员,Moq返回默认值.例如,给定:
public interface IFoo
{
Bar Bar();
}
Run Code Online (Sandbox Code Playgroud)
和
public class Bar
{
}
Run Code Online (Sandbox Code Playgroud)
然后:
[TestMethod]
public void RecursiveMocksAreDisabledByDefaultInMoq()
{
var foo = new Mock<IFoo>().Object;
Assert.IsNull(foo.Bar());
}
Run Code Online (Sandbox Code Playgroud)
但是,在AutoFixture.AutoMoq中,默认情况下启用递归模拟,如:
[TestMethod]
public void RecursiveMocksAreEnabledByDefaultInAutoFixture()
{
var fixture = new Fixture().Customize(new AutoMoqCustomization());
var foo = fixture.Create<IFoo>();
Assert.IsNotNull(foo.Bar());
}
Run Code Online (Sandbox Code Playgroud)
这是为什么?而且,如何在AutoFixture.AutoMoq中关闭自动递归模拟?
谢谢
Moq.3.1.416.3 AutoFixture.AutoMoq.3.16.5
我们有一个长期运行的操作,包括许多可以取消的点.如果我们要使用任务取消令牌方法,我们需要确保在每个所需位置检查取消.
这对我们来说似乎不是最理想的.我们在这里看到两个问题:
我们应该使用全局取消令牌来处理2.?我们应该AppDomain用来处理1.和2.?
文件use表明:
一些...伪模块将语义导入当前块范围(如严格或整数,不像普通模块,它将符号导入当前包(在文件末尾有效).
同样的, autodie
将函数替换为具有词法范围的成功或死亡的函数
如何使用普通模块将导入语义实现到当前块范围?
我正在读一本Clojure书.我将其中一个示例键入文件中.如何将其加载到lein repl?
我没有lein项目,也不愿意创建项目.
请考虑以下Perl代码:
use Smart::Comments;
print "${ \return_hello() }\n";
### ${ \return_hello() }
sub return_hello {return 'hello'}
Run Code Online (Sandbox Code Playgroud)
产生输出:
hello
### ${ \return_hello() }
Run Code Online (Sandbox Code Playgroud)
我怎么能return_hello在智能评论上调用该功能才能打印hello?
我的Perl脚本中有一个INT信号处理程序.当Perl脚本处于系统调用中时发送INT时不会执行它.为什么?
考虑:
$ perl5.12/bin/perl -E "$(cat <<EOF
\$SIG{INT} = sub {say q(trapped INT); exit};
say q(sleeping ...);
system q(sleep 10000); # INT at this point is not caught by Perl.
EOF)"
sleeping ...
Run Code Online (Sandbox Code Playgroud)
但是,如果我用睡眠呼叫替换系统调用,它按预期工作:
$ perl5.12/bin/perl -E "$(cat <<EOF
\$SIG{INT} = sub {say q(trapped INT); exit};
say q(sleeping ...);
sleep 10000; # replaces the system call from above
EOF)"
sleeping ...
trapped INT
Run Code Online (Sandbox Code Playgroud)
Perl版本是:
$ perl5.12/bin/perl -v
This is perl 5, version 12, subversion 3 (v5.12.3) built for x86_64-linux-thread-multi
(with …Run Code Online (Sandbox Code Playgroud) 与地图不同,记录不是功能.为什么?
;; maps are functions of the keys
({:a 1} :a) ;; 1
({:a 1}) ;; error
({:a 1} 1) ;; nil
;; records? no, records are not functions
(defrecord T [t])
((->T 1) :t) ;; error: T cannot be cast to clojure.lang.IFn
(:t (->T 1)) ;; 1
Run Code Online (Sandbox Code Playgroud) 我希望有可能.Object通过Moq中的扩展方法操作模拟,但我没有找到任何适用的扩展方法.
例如:
interface IFoo
{
void Bar();
}
/* ... */
var mock = Mock<IFoo>();
mock.Verify(x => x.Bar());
IFoo foo = mock.Object;
foo.Verify(x => x.Bar()); // this does not compile!
Run Code Online (Sandbox Code Playgroud)
反正我是否可以编写上面的代码(不编译的代码?)如果没有,为什么不呢?