在使用RSpec时是否有任何方法可以删除任何存根和模拟?
例:
RestClient.should_receive(:delete).with("http://www.example.com")
...
...
# this will remove the mocking of "should_receive" and
# restore the proper "delete" method on "RestClient".
RestClient.mocking_reset
Run Code Online (Sandbox Code Playgroud)
(mocking_reset是我所需功能的虚构名称).
我知道有一种方法"unstub"可以重置"stubs"而不是"should_receive".
那么,有没有任何方法相当于"unstub"而是"should_receive"?
Panayotis
我想验证各种日期字段是否已正确更新,但我不想乱用预测何时new Date()被调用.如何删除Date构造函数?
import sinon = require('sinon');
import should = require('should');
describe('tests', () => {
var sandbox;
var now = new Date();
beforeEach(() => {
sandbox = sinon.sandbox.create();
});
afterEach(() => {
sandbox.restore();
});
var now = new Date();
it('sets create_date', done => {
sandbox.stub(Date).returns(now); // does not work
Widget.create((err, widget) => {
should.not.exist(err);
should.exist(widget);
widget.create_date.should.eql(now);
done();
});
});
});
Run Code Online (Sandbox Code Playgroud)
如果它是相关的,这些测试在节点应用程序中运行,我们使用TypeScript.
class A
def initialize
@x = do_something
end
def do_something
42
end
end
Run Code Online (Sandbox Code Playgroud)
do_something在调用原始实现之前,如何在rspec中存根(因此分配42 @x)?当然,并没有改变实施.
只是想知道是否/如何在rspec存根链中传递参数.举个例子,假设我有以下行动:
def index
@payments = Payment.order(:updated_at).where(:paid => true)
@bad_payments = Payment.order(:some_other_field).where(:paid => false)
end
Run Code Online (Sandbox Code Playgroud)
在我的控制器规范中,我希望能够存根两种方法并返回不同的结果.如果只有@payments场地在行动中,我会使用类似的东西
Payment.stub_chain(:order, :where) { return_this }
Run Code Online (Sandbox Code Playgroud)
但是,当然,这将返回相同的值@bad_payments.
那么 - 简而言之,我如何包含:updated_at和:paid => true作为存根条件?
问题1:
我正在学习Android服务,经常看到这样的代码:
private ISampleService.Stub sampleServiceIf = new ISampleService.Stub(){}
Run Code Online (Sandbox Code Playgroud)
什么是.Stub?
问题2:
我检查了" AIDL ",但我想知道为什么我们必须使用它而不是Java接口文件?
我正在使用System.Data.Objects.EntityFunctions.TruncateTime方法在我的查询中获取日期时间的日期部分:
if (searchOptions.Date.HasValue)
query = query.Where(c =>
EntityFunctions.TruncateTime(c.Date) == searchOptions.Date);
Run Code Online (Sandbox Code Playgroud)
这个方法(我相信同样适用于其他EntityFunctions方法)不能在LINQ to Entities之外执行.在单元测试中执行此代码(实际上是对象的LINQ)会导致NotSupportedException抛出:
System.NotSupportedException:此函数只能从LINQ to Entities调用.
我DbSets在我的测试中使用存根来存储虚假存储库.
那我应该如何对我的查询进行单元测试?
我在Android代码中浏览,因为我想查看Activity.finish()方法的内容.
我只想确认在Activity.finish()那里会调用onDestroy()方法.
但我在这种方法(以及许多其他方法)中发现的是:
public void finish() {
throw new RuntimeException("Stub!");
}
Run Code Online (Sandbox Code Playgroud)
那么在哪里可以找到真正破坏活动的代码?谢谢!
我想创建一个Android应用程序,这个应用程序将对Web服务进行RESTful调用以获取一些数据.
我知道RESTful接口会是什么,但我不想要创建自己的实现的麻烦.有没有一种简单的方法来创建一个存根RESTful Web服务,它将返回一些静态数据而无需编写完整的WS应用程序来执行此操作?
假设我有以下Event型号:
from django.db import models
import datetime
class Event(models.Model):
date_start = models.DateField()
date_end = models.DateField()
def is_over(self):
return datetime.date.today() > self.date_end
Run Code Online (Sandbox Code Playgroud)
我想Event.is_over()通过创建一个将来结束的事件(今天+ 1或其他)进行测试,并将日期和时间存根,以便系统认为我们已经达到了未来的日期.
就python而言,我希望能够存储所有系统时间对象.这包括datetime.date.today(),datetime.datetime.now()和任何其他标准日期/时间对象.
这样做的标准方法是什么?
stub ×10
android ×3
rspec ×3
testing ×2
unit-testing ×2
aidl ×1
datetime ×1
django ×1
dummy-data ×1
java ×1
javascript ×1
mocking ×1
python ×1
rest ×1
ruby ×1
service ×1
sinon ×1
terminology ×1
web-services ×1