运行量angular器testing接收错误“ReferenceError:模块未定义”

我试图在Windows机器上安装量angular器testing。 我有服务器启动并运行,但当我testing时,它失败,我得到以下错误:ReferenceError:模块未定义“

我正在使用PageObject模式来构build我的testing和testing框架。

在我的testing文件中,我有:

describe('Ticket', function(){ var etPage = require('ticket-page.js'); beforeEach(function () { etPage.get(); }); it('Should set Action', function(){ browser.debugger(); etPage.setTicketId(1); }); }; 

并在Ticket-page.js类中

 var EquityTicketPage = function () { this.ticketWrapper = null; this.setTicketId = function(id){ this.ticketWrapper = driver.element(By.ByCssSelector('[data-ticket-id="' + id + '"]')); }; this.get = function () { browser.ignoreSynchronization = true; browser.get('http://deleted'); }; }; modules.exports = new EquityTicketPage(); 

堆栈跟踪指向“modules.exports = new EquityTicketPage();” 在tickets-page.js文件中。 我不确定它在这条线上的失败。 也许节点没有正确设置/引用这些文件。 也许它没有在我的机器上正确安装。

我看到这个问题,并认为可能是configuration有问题。 我的node_modules文件夹中没有grunt-karma版本,我不知道是否需要它。

然后看着这个问题,我想也许我需要在我的configuration文件中的东西,并注意到我没有一个文件部分。 文件部分指向代码文件,所以我应该没问题。

这是我的configuration

 // A reference configuration file. exports.config = { // ----- How to setup Selenium ----- // // There are three ways to specify how to use Selenium. Specify one of the // following: // // 1. seleniumServerJar - to start Selenium Standalone locally. // 2. seleniumAddress - to connect to a Selenium server which is already // running. // 3. sauceUser/sauceKey - to use remote Selenium servers via SauceLabs. // // If the chromeOnly option is specified, no Selenium server will be started, // and chromeDriver will be used directly (from the location specified in // chromeDriver) // The location of the selenium standalone server .jar file, relative // to the location of this config. If no other method of starting selenium // is found, this will default to // node_modules/protractor/selenium/selenium-server... seleniumServerJar: null, // The port to start the selenium server on, or null if the server should // find its own unused port. seleniumPort: null, // Chromedriver location is used to help the selenium` standalone server // find chromedriver. This will be passed to the selenium jar as // the system property webdriver.chrome.driver. If null, selenium will // attempt to find chromedriver using PATH. chromeDriver: null, // If true, only chromedriver will be started, not a standalone selenium. // Tests for browsers other than chrome will not run. chromeOnly: false, // Additional command line options to pass to selenium. For example, // if you need to change the browser timeout, use // seleniumArgs: ['-browserTimeout=60'], seleniumArgs: [ ], // If sauceUser and sauceKey are specified, seleniumServerJar will be ignored. // The tests will be run remotely using SauceLabs. sauceUser: null, sauceKey: null, // The address of a running selenium server. If specified, Protractor will // connect to an already running instance of selenium. This usually looks like // seleniumAddress: 'http://localhost:4444/wd/hub' seleniumAddress: 'http://localhost:4444/wd/hub', // The timeout for each script run on the browser. This should be longer // than the maximum time your application needs to stabilize between tasks. allScriptsTimeout: 11000, // ----- What tests to run ----- // // Spec patterns are relative to the location of this config. specs: [ 'e2e/**/*behaviors-e2e.js' //'e2e/**/new-tickets-loading-e2e.js' ], // Patterns to exclude. exclude: [], //needs newer version suites: { all: ['e2e/**/*e2e.js'], fillDown: ['e2e/**/*e2e.js'] }, // ----- Capabilities to be passed to the webdriver instance ---- // // For a full list of available capabilities, see // https://code.google.com/p/selenium/wiki/DesiredCapabilities // and // https://code.google.com/p/selenium/source/browse/javascript/webdriver/capabilities.js capabilities: { browserName: "internet explorer" //browserName: "phantomjs" }, // ----- More information for your tests ---- // // A base URL for your application under test. Calls to protractor.get() // with relative paths will be prepended with this. //baseUrl: 'http://nyqmoe3.ms.com:6060/vikas/#?sessionId=3c94bba7-4a7d-4443-b779-3909c3f90b4d', // Selector for the element housing the angular app - this defaults to // body, but is necessary if ng-app is on a descendant of <body> rootElement: 'html', // A callback function called once protractor is ready and available, and // before the specs are executed // You can specify a file containing code to run by setting onPrepare to // the filename string. onPrepare: function() { // At this point, global 'protractor' object will be set up, and jasmine // will be available. For example, you can add a Jasmine reporter with: // jasmine.getEnv().addReporter(new jasmine.JUnitXmlReporter( // 'outputdir/', true, true)); }, // The params object will be passed directly to the protractor instance, // and can be accessed from your test. It is an arbitrary object and can // contain anything you may need in your test. // This can be changed via the command line as: // --params.login.user 'Joe' params: { login: { user: 'Jane', password: '1234' } }, // ----- The test framework ----- // // Jasmine is fully supported as a test and assertion framework. // Mocha has limited beta support. You will need to include your own // assertion framework if working with mocha. framework: 'jasmine', // ----- Options to be passed to minijasminenode ----- // // See the full list at https://github.com/juliemr/minijasminenode jasmineNodeOpts: { // onComplete will be called just before the driver quits. onComplete: null, // If true, display spec names. isVerbose: false, // If true, print colors to the terminal. showColors: true, // If true, include stack traces in failures. includeStackTrace: true, // Default time to wait in ms before a test fails. defaultTimeoutInterval: 30000 }, // ----- Options to be passed to mocha ----- // // See the full list at http://visionmedia.github.io/mocha/ mochaOpts: { ui: 'bdd', reporter: 'list' }, // ----- The cleanup step ----- // // A callback function called once the tests have finished running and // the webdriver instance has been shut down. It is passed the exit code // (0 if the tests passed or 1 if not). onCleanUp: function() {} }; 

这是一个错字。 在页面的底部使用module ,而不是modules

 module.exports = new EquityTicketPage();