Jasmine期望不使用requirejs

时间:2013-09-16 08:13:48

标签: javascript maven testing jasmine

以下代码永远不会运行:

define("model/Contact", function() {
    console.log(Contact);
    describe('Something',function(){
        it('shows no error',function(){
            require(["model/MyModel"], function(MyModel) {
               console.log(MyModel);
               expect(false).toBeTruthy();
            });
        });
    });
 });

如果我使用define块,代码永远不会在jasmine maven插件中运行: http://searls.github.io/jasmine-maven-plugin/amd-support.html

我的插件

       <plugin>
            <groupId>com.github.searls</groupId>
            <artifactId>jasmine-maven-plugin</artifactId>
            <version>1.3.1.2</version>
            <executions>
                <execution>
                    <goals>
                        <goal>test</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <specRunnerTemplate>REQUIRE_JS</specRunnerTemplate>
                <jsSrcDir>${jsFolder}/src</jsSrcDir>
                <jsTestSrcDir>${jsTestFolder}/specs</jsTestSrcDir>
                <preloadSources>
                    <source>${jsFolder}/src/extlib/requirejs/require.js</source>
                </preloadSources>
            </configuration>
        </plugin>

有趣的是以下代码:

describe('Something',function(){
    it('shows no error',function(){
        require(["model/MyModel"], function(MyModel) {
            console.log(MyModel);
            expect(false).toBeTruthy();
        });
    });
});

如果我使用此代码,MyModel已定义并可用。但expect()函数永远不会抛出错误。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

在开始测试之前,您必须要求使用模块:

require(["model/MyModel"], function (MyModel) {
  describe('Something', function () {
    it('shows no error', function () {

      console.log(MyModel);
      expect(false).toBeTruthy();
    });
  });
});

在您的示例中,测试运行器在require回调运行之前完成了测试。