帮酷LOGO
  • 显示原文与译文双语对照的内容
文章标签:CHAI    Extend  Extends  mocking-framework  ext  Assert  Mocking  
Extends chai with assertions for the Sinon.JS mocking framework.

  • 源代码名称:sinon-chai
  • 源代码网址:http://www.github.com/domenic/sinon-chai
  • sinon-chai源代码文档
  • sinon-chai源代码下载
  • Git URL:
    git://www.github.com/domenic/sinon-chai.git
  • Git Clone代码到本地:
    git clone http://www.github.com/domenic/sinon-chai
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/domenic/sinon-chai
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • Sinon.JS的断言

    使用 sinon Chai 提供一组自定义断言,用于使用断言库的 Sinon.JS spy,stub和mock框架。 你可以利用 Sinon.JS.的所有强大工具来获得所有的好处

    而不是使用 sinon 。js的断言:

    sinon.assertCalledWith(mySpy, "foo");

    或者笨拙地尝试在 spy 属性上使用 should 或者 expect 接口的:

    mySpy.calledWith("foo").should.be.ok;expect(mySpy.calledWith("foo")).to.be.ok;

    你可以说

    mySpy.should.have.been.calledWith("foo");expect(mySpy).to.have.been.calledWith("foo");

    断言

    所有你最喜欢的Sinon.JS 断言都进入sinon链。 这里显示 should 语法;同样也可以使用 expect 等效项。

    Sinon.JS 属性/方法sinon链断言
    名名spy.should.have.been.called
    callCountspy.should.have.callCount(n )
    calledOncespy.should.have.been.calledOnce
    calledTwicespy.should.have.been.calledTwice
    calledThricespy.should.have.been.calledThrice
    calledBeforespy1.should.have.been.calledBefore(spy2 )
    calledAfterspy1.should.have.been.calledAfter(spy2 )
    calledImmediatelyBeforespy.should.have.been.calledImmediatelyBefore(spy2 )
    calledImmediatelyAfterspy.should.have.been.calledImmediatelyAfter(spy2 )
    calledWithNewspy.should.have.been.calledWithNew
    alwaysCalledWithNewspy.should.always.have.been.calledWithNew
    calledOnspy.should.have.been.calledOn(context )
    alwaysCalledOnspy.should.always.have.been.calledOn(context )
    calledWithspy.should.have.been.calledWith(...args )
    alwaysCalledWithspy.should.always.have.been.calledWith(...args )
    calledWithExactlyspy.should.have.been.calledWithExactly(...args )
    alwaysCalledWithExactlyspy.should.always.have.been.calledWithExactly(...args )
    calledWithMatchspy.should.have.been.calledWithMatch(...args )
    alwaysCalledWithMatchspy.should.always.have.been.calledWithMatch(...args )
    返回spy.should.have.returned(returnVal )
    alwaysReturnedspy.should.have.always.returned(returnVal )
    投掷spy.should.have.thrown(errorObjOrErrorTypeStringOrNothing )
    alwaysThrewspy.should.have.always.thrown(errorObjOrErrorTypeStringOrNothing )

    有关每个断言行为的更多信息,请参见的相应 spy 方法的文档。 这些当然不仅适用于间谍,而且是个别的spy 调用,存根和模拟。

    注意,你可以用 .not的否定任何断言。 例如 notCalled 使用 spy.should.have.not.been.called

    对于 assert 接口,不需要这里库。 你可以将 Sinon.JS 断言安装在带有的chain对象的assert 中,如下所示:

    var chai =require("chai");var sinon =require("sinon");sinon.assert.expose(chai.assert, { prefix:"" });

    示例

    使用链的should:

    "use strict";var chai =require("chai");var sinon =require("sinon");var sinonChai =require("sinon-chai");chai.should();chai.use(sinonChai);functionhello(name, cb) {
     cb("hello "+ name);
    }describe("hello", function () {
     it("should call callback with correct greeting", function () {
     var cb =sinon.spy();
     hello("foo", cb);
     cb.should.have.been.calledWith("hello foo");
     });
    });

    使用链的expect:

    "use strict";var chai =require("chai");var sinon =require("sinon");var sinonChai =require("sinon-chai");var expect =chai.expect;chai.use(sinonChai);functionhello(name, cb) {
     cb("hello "+ name);
    }describe("hello", function () {
     it("should call callback with correct greeting", function () {
     var cb =sinon.spy();
     hello("foo", cb);
     expect(cb).to.have.been.calledWith("hello foo");
     });
    });

    安装和使用

    节点

    做一个 npm install sinon-chai 来启动和运行。 然后:

    var chai =require("chai");var sinonChai =require("sinon-chai");chai.use(sinonChai);

    当然,你可以将这里代码放入通用测试fixture文件中;对于使用 mocha 插件的示例,请参见测试自己的sinon chain测试。

    AMD

    sinon链支持被用作 AMD 模块,将它的注册为匿名( 就像链) 。 因此,假设已经将加载程序配置为将链和sinon链文件映射到相应模块 id "chai""sinon-chai",则可以按如下方式使用这些文件:

    define(function (require, exports, module) {
     var chai =require("chai");
     var sinonChai =require("sinon-chai");
     chai.use(sinonChai);
    });

    <script> 标记

    如果将sinon链直接与 <script> 标签一起使用,那么它将自动插入链,并准备好使用。 注意,你还需要获得最新的Sinon.JS 浏览器构建:

    <scriptsrc="chai.js"></script>
    <scriptsrc="sinon-chai.js"></script>
    <scriptsrc="sinon.js"></script>

    Rails 上的 ruby

    感谢 Cymen Vig,现在有ruby gem 插件,将它与 Rails 资产管道集成。



    文章标签:  ext  Extend  mock  CHAI  Assert  Extends  Mocking  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语