我使用felixge的node-mysql客户端来使用Node.js。 我没有使用ORM。 我正在testing誓言,并希望能够嘲笑我的数据库,可能使用Sinon。 由于我本身并没有真正的DAL(除了node-mysql ),我不太确定如何去做这件事。 我的模型大多是简单的CRUD,有很多getter。 任何想法如何做到这一点?
当嘲笑节点依赖关系时,我发生了以下库: Proxyquire 换铁线 SandboxedModule 兴农 他们似乎都做了或多或less都是一样的事情:允许你模拟require()调用(除了Sinon外,它几乎包含了所有的东西)。 他们似乎都需要一些相当复杂的设置,注意传递给require的string的确切语法 – 在重构期间不是很好。 每个图书馆有什么优点和缺点? 我什么时候会select一个呢? 什么是每个图书馆擅长的示例用例? 这个领域的其他产品有哪些更好?
我有一个相当简单的函数,它返回一个jQuery .ajax()承诺如此: CLAW.controls.validateLocation = function(val, $inputEl) { return $.ajax({ url: locationServiceUrl + 'ValidateLocation/', data: { 'locationName': val }, beforeSend: function() { $inputEl.addClass('busy'); } }).done(function(result) { // some success clauses }).fail(function(result) { // some failure clauses }).always(function() { // some always clauses }); } 在大多数情况下,这个新的承诺接口像梦一样工作,并消除使用jQuery的.ajax()的callback金字塔是伟大的。 然而,我不能为了我的生活弄清楚如何用Jasmine和/或Sinon来正确地testing这些承诺: Sinon的所有文档都假设你正在使用旧式的callback, 我没有看到一个如何与promise / deferreds一起使用的例子 当试图用Jasmine或Sinon间谍来监视$ .ajax时,间谍正在有效地覆盖承诺,所以它的done , fail和always子句不再存在于ajax函数中,所以承诺永远不会解决和抛出一个错误代替 我真的只是喜欢一个或两个如何testing这些新的jQuery .ajax()承诺与上述testing库。 […]
当我运行我的testing时,我得到了上述错误信息。 下面是我的代码(我使用Backbone JS和Jasmine进行testing)。 有谁知道为什么发生这种情况? $(function() { describe("Category", function() { beforeEach(function() { category = new Category; sinon.spy(jQuery, "ajax"); } it("should fetch notes", function() { category.set({code: 123}); category.fetchNotes(); expect(category.trigger).toHaveBeenCalled(); } }) }
我正在尝试使用sinon.js存根方法,但是我得到以下错误: Uncaught TypeError: Attempted to wrap undefined property sample_pressure as function 我也去了这个问题( 在sinon.js中对stubbing和/或嘲笑类 ),并复制粘贴代码,但我得到了同样的错误。 这是我的代码: Sensor = (function() { // A simple Sensor class // Constructor function Sensor(pressure) { this.pressure = pressure; } Sensor.prototype.sample_pressure = function() { return this.pressure; }; return Sensor; })(); // Doesn't work var stub_sens = sinon.stub(Sensor, "sample_pressure").returns(0); // Doesn't work var […]
有没有图书馆来嘲笑localStorage ? 我一直在使用Sinon.JS的大部分我的其他JavaScript嘲笑,发现它真的很棒。 我最初的testing表明,localStorage拒绝在Firefox(sadface)中分配,所以我可能需要一些破解这个:/ 我现在的select(如我所见)如下: 创build所有我的代码使用的包装function,并嘲笑这些 为localStorage创build某种(可能是复杂的)状态pipe理(testing之前的快照localStorage,在清理恢复快照中)。 ?????? 你如何看待这些方法?你认为还有其他更好的方法可以解决吗? 无论哪种方式,我将把最终产生的“库”放在github上,以获得开源的好处。
有没有一种方法可以轻松地重置所有的sinon spys mock和stubs,这些都可以在摩卡的beforeEach模块中清晰地工作。 我看到沙盒是一个选项,但我不明白你如何使用沙箱为此 beforeEach -> sinon.stub some, 'method' sinon.stub some, 'mother' afterEach -> # I want to avoid these lines some.method.restore() some.other.restore() it 'should call a some method and not other', -> some.method() assert.called some.method