Javascript测试相当于Ruby的rspec let
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Javascript测试相当于Ruby的rspec let,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1942字,纯文字阅读大概需要3分钟。
内容图文
在Ruby世界中,使用rspec,我们有一个名为let(https://relishapp.com/rspec/rspec-core/docs/helper-methods/let-and-let)的功能.它的主要好处是它的延迟评估,所以我们可以写这样的测试:
describe Thing do
describe "#process" do
let(:arg) { nil }
let(:result) { Thing.new.process(arg) }
context "given 3" do
let(:arg) { 3 }
it "returns 12" do
expect(result).to eq 12
end
end
context "given 7" do
let(:arg) { 7 }
it "returns 42" do
expect(result).to eq 42
end
end
end
end
关键是我们不必有一条线来计算每个块内的结果.
我的问题是:在Javascript的世界中,是否有提供等效功能的库或框架?
我习惯和Jasmine一起写作,但是我没有和它结婚,并且可以使用Mocha或其他东西,如果它有我正在寻找的这种懒惰的评估功能.
我怀疑有一种方法可以使用beforeEach和function(){…}声明的冗长卷积和类似的东西,但理想情况下提出的解决方案将具有漂亮,简洁和优雅的语法.
我知道jasmine-let,但它已经4年了,没有维护,看起来不像是一个流行的或官方的工具.此外,我对更现代的Javascript开发相对较新,所以我甚至不知道组件安装_____来自哪个(什么工具).
如果我想推出自己的解决方案,这似乎是一个有用的博客文章:http://blog.gypsydave5.com/2015/03/21/lazy-eval-and-memo/
哦,如果重要的话,我会提到我在ES6写作.
解决方法:
如果你正在寻找Jasmine单元测试中的懒惰变量评估,那么有一些很少的替代方案,但去年有一个a fork让它与一个名叫Warren Ouyang(globetro)的同事一起工作.
Mocha Github上还有a closed issue确切地描述了这个场景.有些人发布的示例与功能的特征,替代方案和显式实现相匹配,更像是RSpec. (见here和here.)
describe('Thing', () => {
def('arg', () => null )
return describe('process', () => {
def('process', () => new Thing().process($arg) )
context('given 3', () => {
def('arg', () => 3 )
it('returns 12', () => expect($process).to.equal(12))
})
context('given 7', () => {
def('arg', () => 7)
it('returns 42', () => expect($process).to.equal(42))
})
})
})
Here’s the above example on jsfiddle.net.这使用了更简洁的JavaScript风格.
Here’s the previous example of using bdd-lazy-var/rspec on jsfiddle.net.
编辑:为简洁起见,请使用CoffeeScript查看其他答案.这个答案是JavaScript.
内容总结
以上是互联网集市为您收集整理的Javascript测试相当于Ruby的rspec let全部内容,希望文章能够帮你解决Javascript测试相当于Ruby的rspec let所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。