Tag: 嘲弄

unit testingHttpContext.Current.Cache或C#中的其他服务器端方法?

为使用HttpContext.Current.Cache类的类创buildunit testing时,使用NUnit时出现错误。 该function是基本的 – 检查一个项目是否在caching中,如果没有,创build它并把它放在: if (HttpContext.Current.Cache["Some_Key"] == null) { myObject = new Object(); HttpContext.Current.Cache.Insert("Some_Key", myObject); } else { myObject = HttpContext.Current.Cache.Get("Some_Key"); } 当从一个unit testing中调用这个NullReferenceException时,遇到第一个Cache行时,它在NullReferenceException时失败。 在Java中,我将使用Cactus来testing服务器端代码。 有没有类似的工具,我可以使用C#代码? 这个SO问题提到模拟框架 – 这是我可以testing这些方法的唯一方法吗? 有没有类似的工具来运行testing的C#? 此外,我不检查Cache是否为空,因为我不想专门为unit testing编写代码,并假定它在服务器上运行时始终有效。 这是否有效,还是应该在caching中添加空检查?

当使用$ mock-> expect($ this-> at(…))时,PHPUnit“Mocked方法不存在”

我遇到了PHPUnit模拟对象的一个​​奇怪的问题。 我有一个方法应该被调用两次,所以我使用“在”匹配。 这是第一次调用方法,但由于某种原因,第二次调用方法,我得到了“模拟方法不存在”。 我之前使用过“at”匹配器,从来没有遇到过这种情况。 我的代码看起来像这样: class MyTest extends PHPUnit_Framework_TestCase { … public function testThis() { $mock = $this->getMock('MyClass', array('exists', 'another_method', '…')); $mock->expects($this->at(0)) ->method('exists') ->with($this->equalTo('foo')) ->will($this->returnValue(true)); $mock->expects($this->at(1)) ->method('exists') ->with($this->equalTo('bar')) ->will($this->returnValue(false)); } … } 当我运行testing时,我得到: Expectation failed for method name is equal to <string:exists> when invoked at sequence index 1. Mocked method does not exist. 如果我删除第二个匹配器,我没有得到错误。 有没有人遇到过这个? […]

PHPUnit模拟对象和方法types提示

我正在尝试使用PHPunit创build\ SplObserver的模拟对象,并将模拟对象附加到\ SplSubject。 当我尝试将模拟对象附加到实现了\ SplSubject的类时,我得到一个可捕获的致命错误,指出模拟对象没有实现\ SplObserver: PHP Catchable fatal error: Argument 1 passed to ..\AbstractSubject::attach() must implement interface SplObserver, instance of PHPUnit_Framework_MockObject_Builder_InvocationMocker given, called in ../Decorator/ResultCacheTest.php on line 44 and defined in /users/…/AbstractSubject.php on line 49 或多或less,这是代码: // Edit: Using the fully qualified name doesn't work either $observer = $this->getMock('SplObserver', array('update')) ->expects($this->once()) ->method('update'); // Attach […]

RSpec:如何testingRails日志消息的期望?

我正在尝试testingRailslogging器在我的一些规范中接收消息。 我正在使用Logging的gem 。 假设我有这样的课程: class BaseWorker def execute logger.info 'Starting the worker…' end end 和一个规范一样: describe BaseWorker do it 'should log an info message' do base_worker = BaseWorker.new logger_mock = double('Logging::Rails').as_null_object Logging::Rails.stub_chain(:logger, :info).and_return(logger_mock) logger_mock.should_receive(:info).with('Starting the worker…') base_worker.execute Logging::Rails.unstub(:logger) end end 我收到以下失败消息: Failure/Error: logger_mock.should_receive(:info).with('Starting worker…') (Double "Logging::Rails").info("Starting worker…") expected: 1 time received: 0 times 我已经尝试了几种不同的方法来使规范通过。 这适用于例如: […]

PHPUnit:期望方法含义

当我创build一个新的模拟,我需要调用期望的方法。 究竟是什么? 那么它的论点呢? $todoListMock = $this->getMock('\Model\Todo_List'); $todoListMock->expects($this->any()) ->method('getItems') ->will($this->returnValue(array($itemMock))); 我找不到任何地方的原因(我试过文档)。 我已经阅读了消息来源,但我无法理解。 谢谢。

PowerMocktesting – 设置类的静态字段

我很难find一种方法来设置一个类的静态字段。 基本上是这样的: public class Foo{ // … private static B b = null; } B是另一类。 除了setInternalStateFromContext()之外,还有什么办法可以在PowerMock中做到这一点吗? 使用上下文类方法似乎有点矫枉过正设置一个领域。 谢谢。

我怎样才能让PHPUnit MockObjects根据参数返回不同的值?

我有一个PHPUnit模拟对象返回'return value'不pipe它的参数: // From inside a test… $mock = $this->getMock('myObject', 'methodToMock'); $mock->expects($this->any)) ->method('methodToMock') ->will($this->returnValue('return value')); 我希望能够做的是返回一个不同的值基于传递给模拟方法的参数。 我试过类似的东西: $mock = $this->getMock('myObject', 'methodToMock'); // methodToMock('one') $mock->expects($this->any)) ->method('methodToMock') ->with($this->equalTo('one')) ->will($this->returnValue('method called with argument "one"')); // methodToMock('two') $mock->expects($this->any)) ->method('methodToMock') ->with($this->equalTo('two')) ->will($this->returnValue('method called with argument "two"')); 但是这会导致PHPUnit投诉,如果模拟不是用参数'two'调用'two' ,所以我假设methodToMock('two')的定义覆盖了第一个的定义。 所以我的问题是:有什么办法让一个PHPUnit模拟对象返回基于它的参数不同的值? 如果是的话,怎么样?

我应该什么时候嘲笑?

我对假冒和伪造物品有一个基本的了解,但是我不确定自己有什么时间/在哪里使用嘲弄的感觉 – 特别是因为它适用于这种场景。