草庐IT

ruby-on-rails - RSpec 的期望如何在 ROR 中工作

在阅读MichaelHartl的RubyOnRails教程时,在作者编写集成测试以验证他的注册页面的部分中,他使用了下面的代码spinet。我明白了代码的作用,但无法理解“如何”部分,即无法理解执行顺序。expect{click_button"Createmyaccount"}.not_tochange(User,:count)有人可以解释一下上述方法链和block的语义以及它们是如何组合在一起的吗? 最佳答案 您将使用expect...change来验证特定方法调用是否更改或不更改其他值。在这种情况下:expect{click_b

ruby - RSpec 是否有可能期望两个表发生变化?

RSpec预期变化:it"shouldincrementthecount"doexpect{Foo.bar}.tochange{Counter.count}.by1end有没有办法在两个表中期待变化?expect{Foo.bar}.tochange{Counter.count}.by1andchange{AnotherCounter.count}.by1 最佳答案 我更喜欢这种语法(rspec3或更高版本):it"shouldincrementthecounters"doexpect{Foo.bar}.tochange{Counte

ruby - RSpec:如何在期望语法中使用数组包含匹配器

我使用newRSpecsyntax(expect而不是should)并且我想测试一个数组是否包含另一个数组的元素。在旧语法中它将是:array1.shouldinclude(array2)在我尝试编写的新语法中:expect(array1).toinclude(array2)但是我得到了一个错误(这很合理):TypeError:wrongargumenttypeArray(expectedModule)然后我写道:expect(array1).tobe_include(array2)但它很丑陋而且没有用:显然它检查array2是否是array1的元素,而不是检查array2的所有元素是

javascript - Jasmine array.length 期望

我是jasminejs测试框架的新手,今天得到了一些奇怪的结果。参见以下代码(search是一个执行api请求并返回promise的函数):it('shouldbeabletosearch',function(){search('string').done(function(result){expect(result.length).toBeGreaterThan(1);//trueconsole.log(result.lenght);//undefined});});问题是,由于一些我必须修复的错误,promise的结果是未定义的,但测试被标记为Success。我发现这是一种误导,如

javascript - Browserify 从全局范围的 require 加载依赖项,而不是期望它们被捆绑在一起

我正在开发库A和库B,B依赖于A。我想使用browserify将它们独立捆绑起来,所以在我的浏览器中我可以这样做:varA=require("A");varB=require("B");我想将它们独立捆绑起来,因为我还在开发仅依赖于A的库C,如果A包含在B中,那么C将无法访问它,如果A在B和C中,我有重复项。所以我从浏览器化库A开始:browserify-r./src/A.js:A-obuild/A.js它工作得很好,我可以分发A,其他人可以用它开发他们的应用程序。然后我浏览库B:browserify-r./src/B.js:B-obuild/B.js但我现在有两次A,A在浏览器中独立

javascript - 期望失败 : "Expected [ ] to be empty array."

这是失败的测试:describe("Checkingerrors",function(){varscope={};beforeEach(function(){browser.get("/#endpoint");browser.waitForAngular();scope.page=newMyPage();});it("shouldnotshowanyerrors",function(){expect(scope.page.errors).toBeEmptyArray();});});其中MyPage是一个页面对象:varMyPage=function(){this.errors=ele

javascript - Jasmine spy 期望用 "Object(...)"调用

我正在完成从Jasmine1.3到2.0的迁移。到目前为止,我已经重构了大部分代码以符合2.0的更新语法。然而,某种测试仍然失败。简而言之,我的测试是这样的:varobj=newCustomCriteria();spyOn(my,"function");my.function(obj);expect(my.function).toHaveBeenCalledWith({big:"fatobject"});我的CustomCriteria类:varCustomCriteria=function(){this.big="fatobject";};测试失败,出现以下情况:Expectedsp

javascript - JSLint 期望 'set' 而不是看到 ''

JSLinting以下代码:/*jslintbrowser:true,es5:true,*/varVCA={getenable(){'usestrict';return0;},setenable(value){'usestrict';console.log(value);}};错误结果:Problematline11character9:Expected'set'andinsteadsaw''.setenable(value){我不明白该怎么做才能正确地看到'set'?!我知道__defineGetter__语法,但真的想使用上面的样式。有人有关于此错误的更多信息吗?

javascript - Chai js 期望属性值空数组

我正在尝试使用chaijs断言编写单元测试,并且想知道如何期望长度为零的数组作为值。我的测试函数期望语句:returnexpect(functionRetuningPromise()).toeventually.have.property("key1",[]);运行mocha的控制台输出:AssertionError:expected{otherkey:otherVal,key1:[]}tohaveaproperty'key1'of[],butgot[]我试过deep.property,key1:"[]"但没有成功 最佳答案 我忽略

javascript - 禁用 Jasmine 期望,例如 xdescribe 或 xit?

关于Jasminewebsite我看到我们可以通过xdescribe禁用套件或xit的个人规范.有没有办法只禁用一个期望(比如xexpect)?我问这个问题的原因是因为我正在使用Protractor编写e2e测试并且在我们的持续集成中我们还没有(如果有的话)访问数据库,尽管我们可以在本地运行真正的端到端例如,通过访问数据库进行测试。我想根据配置或环境变量将个人期望标记为可选。最好进行一次切换,然后围绕expect创建一个包装器,只有当我们在本地运行测试(可以访问数据库)时才会失败。例如,我可以创建一个新的规范系列:if(process.env.DB_AVAILABLE){dbit=it