Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我应该如何使用requireJs编写spec文件?_Javascript_Backbone.js_Requirejs_Jasmine - Fatal编程技术网

Javascript 我应该如何使用requireJs编写spec文件?

Javascript 我应该如何使用requireJs编写spec文件?,javascript,backbone.js,requirejs,jasmine,Javascript,Backbone.js,Requirejs,Jasmine,我有一个模型,看起来像这样: //myModel.js define([], function () { var MyModel = Backbone.Model.extend({ // my code }); return MyModel }); 那么,如果我想为这个模型编写规范,我应该如何使用requireJs加载这个模型 我确实尝试了以下方法: //myModel.spec.js define([ "js/models/myModel",

我有一个模型,看起来像这样:

//myModel.js
define([], function () {
    var MyModel = Backbone.Model.extend({
        // my code
    });
    return MyModel
});
那么,如果我想为这个模型编写规范,我应该如何使用requireJs加载这个模型

我确实尝试了以下方法:

//myModel.spec.js
define([
    "js/models/myModel",
], function (MyModel) {
    describe("My model", function()
    {
        beforeEach(function () 
        {
            this.myModel = new MyModel({
                name: "my title"
            });
        });
    });
});

这是正确的方法吗?

是的,这是正确的。使用RequireJS进行测试的好处在于,您必须在define块中声明所有测试依赖项。根据定义,单元测试应该只测试一件事情。所以,如果您在一个测试中有多个依赖项,那么您根本没有进行真正的“单元测试”,这就是代码的味道


理想情况下,唯一的依赖项应该是正在测试的文件。如果该文件本身有任何依赖项,例如服务器端服务或复杂的异步API,则可以使用存根和模拟来模拟它们。查看SinonJS,了解一个很棒的存根/模拟库。

这正是我使用Jasmine和Spy.js进行设置的方式。