This commit is contained in:
sw 2015-01-26 14:11:06 +08:00
commit a04bd5d826
22 changed files with 518 additions and 334 deletions

View File

@ -209,3 +209,60 @@ java.lang.UnsupportedOperationException: Not supported yet.
at com.aptana.index.core.IndexRequestJob.indexFileStores(IndexRequestJob.java:205) at com.aptana.index.core.IndexRequestJob.indexFileStores(IndexRequestJob.java:205)
at com.aptana.index.core.IndexContainerJob.run(IndexContainerJob.java:114) at com.aptana.index.core.IndexContainerJob.run(IndexContainerJob.java:114)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
!SESSION 2015-01-17 11:30:30.655 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.6.0_24
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=zh_CN
Command-line arguments: -os win32 -ws win32 -arch x86
!ENTRY org.eclipse.core.resources 4 567 2015-01-17 11:30:37.624
!MESSAGE Workspace restored, but some problems occurred.
!SUBENTRY 1 org.eclipse.core.resources 4 567 2015-01-17 11:30:37.624
!MESSAGE Could not read metadata for 'demo'.
!STACK 1
org.eclipse.core.internal.resources.ResourceException: The project description file (.project) for 'demo' is missing. This file contains important information about the project. The project will not function properly until this file is restored.
at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:851)
at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:874)
at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:854)
at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:703)
at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1528)
at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2503)
at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2251)
at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:439)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:299)
at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:440)
at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:268)
at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107)
at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:463)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400)
at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:35)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:473)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(Unknown Source)
at com.aptana.rcp.IDEApplication.start(IDEApplication.java:125)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
!SUBENTRY 2 org.eclipse.core.resources 4 567 2015-01-17 11:30:37.626
!MESSAGE The project description file (.project) for 'demo' is missing. This file contains important information about the project. The project will not function properly until this file is restored.
!ENTRY org.eclipse.core.jobs 2 2 2015-01-17 11:33:58.913
!MESSAGE Job found still running after platform shutdown. Jobs should be canceled by the plugin that scheduled them during shutdown: com.aptana.usage.internal.DefaultAnalyticsEventHandler$1

View File

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<connections/>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<connection>
<connection>
<name>Default</name>
<source>file:/C:/Users/nudt</source>
</connection>
</connection>

View File

@ -1,2 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<sites/>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<servers>
<server host="0.0.0.0" port="3000" project="E:/code/demo" type="org.radrails.rails.railsServer">
<name>demo</name>
</server>
</servers>

View File

@ -1,3 +0,0 @@
#safe table
#Tue Mar 11 17:27:27 CST 2014
connections=connections.9

View File

@ -1,4 +0,0 @@
#safe table
#Tue Mar 11 17:27:27 CST 2014
defaultConnection=defaultConnection.9
sites=sites.9

View File

@ -1,3 +0,0 @@
#safe table
#Tue Mar 11 17:27:27 CST 2014
webservers=webservers.8

View File

@ -1,2 +1,2 @@
activeProject=demo activeProject=trustie
eclipse.preferences.version=1 eclipse.preferences.version=1

View File

@ -1,2 +1,2 @@
eclipse.preferences.version=1 eclipse.preferences.version=1
last_known_studio_version=3.4.0.1358388620 last_known_studio_version=3.4.2.1368863613

View File

@ -1,7 +1,7 @@
ACTIVE_HYPERLINK_COLOR=84,143,160 ACTIVE_HYPERLINK_COLOR=84,143,160
ACTIVE_THEME=Aptana Studio ACTIVE_THEME=Aptana Studio
HYPERLINK_COLOR=84,143,160 HYPERLINK_COLOR=84,143,160
THEME_CHANGED=1394527579080 THEME_CHANGED=1421465443240
eclipse.preferences.version=1 eclipse.preferences.version=1
hyperlinkColor=84,143,160 hyperlinkColor=84,143,160
hyperlinkColor.SystemDefault=false hyperlinkColor.SystemDefault=false

View File

@ -2,6 +2,6 @@ PROBLEMS_FILTERS_MIGRATE=true
SHOW_COOLBAR=true SHOW_COOLBAR=true
SHOW_PERSPECTIVEBAR=true SHOW_PERSPECTIVEBAR=true
eclipse.preferences.version=1 eclipse.preferences.version=1
platformState=1394526372425 platformState=1420528131671
quickStart=false quickStart=false
tipsAndTricks=true tipsAndTricks=true

View File

@ -3,7 +3,7 @@
<booleanAttribute key="advancedRunEnabled" value="false"/> <booleanAttribute key="advancedRunEnabled" value="false"/>
<booleanAttribute key="appendProjectName" value="true"/> <booleanAttribute key="appendProjectName" value="true"/>
<stringAttribute key="browserCmdLine" value=""/> <stringAttribute key="browserCmdLine" value=""/>
<stringAttribute key="browserExecutable" value=""/> <stringAttribute key="browserExecutable" value="C:\Program Files (x86)\Mozilla Firefox\firefox.exe"/>
<stringAttribute key="browserNature" value="Firefox"/> <stringAttribute key="browserNature" value="Firefox"/>
<stringAttribute key="externalBaseUrl" value=""/> <stringAttribute key="externalBaseUrl" value=""/>
<stringAttribute key="httpGetData" value=""/> <stringAttribute key="httpGetData" value=""/>

View File

@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<section name="Workbench"> <section name="Workbench">
<list key="installedFeatures"> <list key="installedFeatures">
<item value="com.aptana.feature.rcp:3.4.0.201304151603-7o7nFDBFFeFt3XrpXNucaz0uIWkY"/> <item value="com.aptana.feature.rcp:3.4.2.201308081805-7o7nFDFFFcLz-2l0rkQ0UYz0u_Wm"/>
<item value="com.aptana.feature.studio:3.4.0.201304151542-7E7G-7MEMVKUHgFcLgFbkKoz0t-7"/> <item value="com.aptana.feature.studio:3.4.2.201308081736-7W7I57boG98RAi489ctbvKi7VXbq"/>
<item value="com.aptana.feature:3.4.0.1365900908-BW7R8FBu-Ylk0DFYW1DC44EXt-dS"/> <item value="com.aptana.feature:3.4.2.1376005939-B87T88BWOnwWRYdZO1DC44EXtPxS"/>
<item value="com.aptana.php.feature:3.3.0.201304151524-7J7E-7IOW_UXOSJY"/> <item value="com.aptana.php.feature:3.4.2.201308081728-7J7E-7IOYXVXXUJS"/>
<item value="com.aptana.pydev.feature:2.7.0.2013032300-7g9I-8Jez0cfdJcee"/> <item value="com.aptana.pydev.feature:2.7.0.2013032300-7g9I-8Jez0cfdJcee"/>
<item value="org.eclipse.help:1.3.0.v20110530-0844-7i7uFFmFFl8nvqbDpEqTvx"/> <item value="org.eclipse.help:1.3.0.v20110530-0844-7i7uFFmFFl8nvqbDpEqTvx"/>
<item value="org.eclipse.platform:3.7.2.v20120207-1839-9gF7UHPDFxGjd-PqDr2jX_4yKaumkoHTz04_q-q"/> <item value="org.eclipse.platform:3.7.2.v20120207-1839-9gF7UHPDFxGjd-PqDr2jX_4yKaumkoHTz04_q-q"/>
<item value="org.eclipse.rcp:3.7.2.v20120120-1424-9DB5FmnFq5JCf1UA38R-kz0S0272"/> <item value="org.eclipse.rcp:3.7.2.v20120120-1424-9DB5FmnFq5JCf1UA38R-kz0S0272"/>
<item value="org.radrails.rails:3.3.0.201304151525-7e-7Q7f5GRKMDENR"/> <item value="org.radrails.rails:3.4.2.201308081726-7n-7Z7oKfjkqlemv"/>
</list> </list>
</section> </section>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<workbench progressCount="30" version="2.0"> <workbench progressCount="26" version="2.0">
<workbenchAdvisor/> <workbenchAdvisor/>
<window height="940" maximized="true" width="1200" x="13" y="31"> <window height="940" maximized="true" width="1200" x="13" y="31">
<fastViewData fastViewLocation="1024"/> <fastViewData fastViewLocation="1024"/>
@ -8,14 +8,14 @@
</perspectiveBar> </perspectiveBar>
<coolbarLayout> <coolbarLayout>
<coolItem id="group.file" itemType="typeGroupMarker"/> <coolItem id="group.file" itemType="typeGroupMarker"/>
<coolItem id="org.eclipse.ui.workbench.file" itemType="typeToolBarContribution" x="126" y="22"/> <coolItem id="org.eclipse.ui.workbench.file" itemType="typeToolBarContribution" x="124" y="22"/>
<coolItem id="additions" itemType="typeGroupMarker"/> <coolItem id="additions" itemType="typeGroupMarker"/>
<coolItem id="org.eclipse.debug.ui.launchActionSet" itemType="typeToolBarContribution" x="145" y="22"/> <coolItem id="org.eclipse.debug.ui.launchActionSet" itemType="typeToolBarContribution" x="141" y="22"/>
<coolItem id="org.eclipse.search.searchActionSet" itemType="typeToolBarContribution" x="88" y="22"/> <coolItem id="org.eclipse.search.searchActionSet" itemType="typeToolBarContribution" x="86" y="22"/>
<coolItem id="com.aptana.ui.globalActionSet" itemType="typeToolBarContribution" x="172" y="22"/> <coolItem id="com.aptana.ui.globalActionSet" itemType="typeToolBarContribution" x="170" y="22"/>
<coolItem id="org.eclipse.ui.edit.text.actionSet.presentation" itemType="typeToolBarContribution" x="84" y="22"/> <coolItem id="org.eclipse.ui.edit.text.actionSet.presentation" itemType="typeToolBarContribution" x="84" y="22"/>
<coolItem id="group.nav" itemType="typeGroupMarker"/> <coolItem id="group.nav" itemType="typeGroupMarker"/>
<coolItem id="org.eclipse.ui.workbench.navigate" itemType="typeToolBarContribution" x="99" y="22"/> <coolItem id="org.eclipse.ui.workbench.navigate" itemType="typeToolBarContribution" x="95" y="22"/>
<coolItem id="group.editor" itemType="typeGroupMarker"/> <coolItem id="group.editor" itemType="typeGroupMarker"/>
<coolItem id="group.help" itemType="typeGroupMarker"/> <coolItem id="group.help" itemType="typeGroupMarker"/>
<coolItem id="org.eclipse.ui.workbench.help" itemType="typeToolBarContribution" x="-1" y="-1"/> <coolItem id="org.eclipse.ui.workbench.help" itemType="typeToolBarContribution" x="-1" y="-1"/>
@ -37,7 +37,7 @@
<view id="com.aptana.terminal.views.terminal:demo" partName="demo"> <view id="com.aptana.terminal.views.terminal:demo" partName="demo">
<viewState> <viewState>
<title>demo</title> <title>demo</title>
<workingDirectory>E:\code\demo</workingDirectory> <workingDirectory>C:\Users\zh</workingDirectory>
</viewState> </viewState>
</view> </view>
<view id="com.aptana.snippets.ui.views.SnippetsView" partName="Snippets"> <view id="com.aptana.snippets.ui.views.SnippetsView" partName="Snippets">
@ -66,10 +66,10 @@
<viewState/> <viewState/>
</view> </view>
<view id="com.aptana.explorer.view" partName="App Explorer"> <view id="com.aptana.explorer.view" partName="App Explorer">
<viewState CommonNavigator.LINKING_ENABLED="0" GitChangedFilesFilterEnabled="" activeProject="demo"> <viewState CommonNavigator.LINKING_ENABLED="0" GitChangedFilesFilterEnabled="" activeProject="trustie">
<project name="demo"> <project name="trustie">
<selection> <selection>
<element path="/demo/app"/> <element path="/trustie"/>
</selection> </selection>
</project> </project>
</viewState> </viewState>
@ -78,7 +78,7 @@
<viewState/> <viewState/>
</view> </view>
</views> </views>
<perspectives activePart="com.aptana.explorer.view" activePerspective="com.aptana.ui.WebPerspective"> <perspectives activePart="org.eclipse.ui.navigator.ProjectExplorer" activePerspective="com.aptana.ui.WebPerspective">
<perspective editorAreaTrimState="2" editorAreaVisible="1" fixed="0" version="0.016"> <perspective editorAreaTrimState="2" editorAreaVisible="1" fixed="0" version="0.016">
<descriptor class="com.aptana.ui.internal.WebPerspectiveFactory" id="com.aptana.ui.WebPerspective" label="Web"/> <descriptor class="com.aptana.ui.internal.WebPerspectiveFactory" id="com.aptana.ui.WebPerspective" label="Web"/>
<alwaysOnActionSet id="com.aptana.browser.actionSet"/> <alwaysOnActionSet id="com.aptana.browser.actionSet"/>
@ -124,14 +124,19 @@
<view id="com.aptana.terminal.views.terminal"/> <view id="com.aptana.terminal.views.terminal"/>
<view id="org.eclipse.ui.views.ProblemView"/> <view id="org.eclipse.ui.views.ProblemView"/>
<view id="com.aptana.terminal.views.terminal:demo"/> <view id="com.aptana.terminal.views.terminal:demo"/>
<view id="org.eclipse.ui.views.ContentOutline"/> <fastViewBars>
<view id="com.aptana.samples.ui.SamplesView"/> <fastViewBar fastViewLocation="16384" id="org.eclipse.ui.internal.ViewStack@d90254" orientation="256" selectedTabId="com.aptana.snippets.ui.views.SnippetsView" style="0">
<view id="com.aptana.snippets.ui.views.SnippetsView"/> <fastViews>
<fastViewBars/> <view id="org.eclipse.ui.views.ContentOutline" ratio="0.3"/>
<view id="com.aptana.samples.ui.SamplesView" ratio="0.3"/>
<view id="com.aptana.snippets.ui.views.SnippetsView" ratio="0.3"/>
</fastViews>
</fastViewBar>
</fastViewBars>
<layout> <layout>
<mainWindow> <mainWindow>
<info folder="true" part="left"> <info folder="true" part="left">
<folder activePageID="com.aptana.explorer.view" appearance="2" expanded="2"> <folder activePageID="org.eclipse.ui.navigator.ProjectExplorer" appearance="2" expanded="2">
<page content="com.aptana.explorer.view" label="App Explorer"/> <page content="com.aptana.explorer.view" label="App Explorer"/>
<page content="org.eclipse.ui.navigator.ProjectExplorer" label="Project Explorer"/> <page content="org.eclipse.ui.navigator.ProjectExplorer" label="Project Explorer"/>
<page content="com.aptana.ui.io.remoteview" label="LabelNotFound"/> <page content="com.aptana.ui.io.remoteview" label="LabelNotFound"/>
@ -166,15 +171,11 @@
</folder> </folder>
</info> </info>
<info folder="true" part="org.eclipse.ui.internal.ViewStack@d90254" ratio="0.75" ratioLeft="627" ratioRight="209" relationship="4" relative="left"> <info folder="true" part="org.eclipse.ui.internal.ViewStack@d90254" ratio="0.75" ratioLeft="627" ratioRight="209" relationship="4" relative="left">
<folder activePageID="com.aptana.snippets.ui.views.SnippetsView" appearance="2" expanded="2"> <folder appearance="2" expanded="0">
<page content="org.eclipse.ui.views.ContentOutline" label="Outline"/> <page content="org.eclipse.ui.views.ContentOutline" label="LabelNotFound"/>
<page content="com.aptana.samples.ui.SamplesView" label="Samples"/> <page content="com.aptana.samples.ui.SamplesView" label="LabelNotFound"/>
<page content="com.aptana.snippets.ui.views.SnippetsView" label="Snippets"/> <page content="com.aptana.snippets.ui.views.SnippetsView" label="LabelNotFound"/>
<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory"> <presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory"/>
<part id="0"/>
<part id="1"/>
<part id="2"/>
</presentation>
</folder> </folder>
</info> </info>
</mainWindow> </mainWindow>
@ -188,6 +189,9 @@
<workbenchWindowAdvisor/> <workbenchWindowAdvisor/>
<actionBarAdvisor/> <actionBarAdvisor/>
<trimLayout> <trimLayout>
<trimArea IMemento.internal.id="16384">
<trimItem IMemento.internal.id="org.eclipse.ui.internal.ViewStack@d90254"/>
</trimArea>
<trimArea IMemento.internal.id="128"> <trimArea IMemento.internal.id="128">
<trimItem IMemento.internal.id="org.eclipse.ui.internal.WorkbenchWindow.topBar"/> <trimItem IMemento.internal.id="org.eclipse.ui.internal.WorkbenchWindow.topBar"/>
</trimArea> </trimArea>

10
spec/factories/users.rb Normal file
View File

@ -0,0 +1,10 @@
require 'faker'
FactoryGirl.define do
factory :user do
login "ExampleUser"
mail "user@example.com"
password "foobar"
password_confirmation "foobar"
end
end

140
spec/models/user_spec.rb Normal file
View File

@ -0,0 +1,140 @@
require 'spec_helper'
describe User do
#测试数据验证
# before { @user = User.new(login: "ExampleUser" ,mail: "user@example.com",
# password: "foobar",password_confirmation: "foobar" ) }
before :each do
@user = User.new(login: "ExampleUser" ,mail: "user@example.com",
password: "foobar",password_confirmation: "foobar" )
end
subject { @user }#指定@user为测试对象
#属性存在性的测试
it { should respond_to(:login) }
it { should respond_to(:mail) }
#此处采用与构建的方式生成数据
# it"is invalid without login" do
# user=FactoryGirl.build(:user,login: nil)
# expect(user).to_not be_valid
# end
#用户名唯一性的测试
describe "when login is already taken" do
before do
user_with_same_login=@user.dup
user_with_same_login.save
end
it{should_not be_valid}
# it "should be valid" do
# expect(@user).to be_valid
# end
end
#邮箱唯一性测试
describe "when mail address is already taken " do
before do
user_with_same_mail=@user.dup#dup method copy mail
user_with_same_mail.mail=@user.mail.upcase#转大写
user_with_same_mail.save
end
it{should_not be_valid}
end
#邮箱唯一性测试2
# describe " is invalid with a same email address" do
# User.create(login:'peter',mail:'test@qq.com')#先保存一个合法的对象
# user1=User.new(login:'jim',mail:'testqq@.com')#再创建user1作为测试的对比对象
# # expect(user1).to have(1).errors_on(:mail)
# it{should_not be_valid}
# end
#login长度测试(login最大25字符)
describe "when the login is too long " do
before{@user.login='a'*25}
it{should be_valid}
end
#姓和名的长度测试
describe "when the first name is too long " do
before{@user.firstname='a'*30}
it{should_not be_valid}
end
describe "when the last name is too long " do
before{@user.lastname='a'*30}
it{should_not be_valid}
end
#login合法性的测试(符合正则表达式规则的用户名:数字英文)
describe "when login format is invalid" do
it"should be invalid" do
username=%w[aa!3 aaa%$&*! 1111==!]
username.each do |valid_username|
@user.login=valid_username
expect(@user).not_to be_valid
end
end
end
describe "when login format is valid" do
it"should be valid" do
username = %w[jim123 123456 aaaaaa]
username.each do |valid_username|
@user.login=valid_username
expect(@user).to be_valid
end
end
end
#邮箱合法性测试在模型user中邮箱使用了正则表达式
describe "is the mail valid" do
context "when mail format is invalid" do
it"should be invalid" do
address=%w[user@foo,com user_at_foo.org example.user@foo.foo@bar_baz.com foo@bar+baz.com]
address.each do |valid_address|
@user.mail=valid_address
expect(@user).not_to be_valid
end
end
end
context "when mail format is valid" do
it"should be valid" do
addresses = %w[user@foo.COM A_US-ER@f.b.org frst.lst@foo.jp a+b@baz.cn]
addresses.each do |valid_address|
@user.mail=valid_address
expect(@user).not_to be_valid
end
end
end
end
describe "when the mail is too long" do#邮箱长度验证的测试
before{@user.mail='a'*60}
it{should_not be_valid}
end
#验证两次输入的密码是否一致的测试
describe "when the password does not match confirmation" do
before{@user.password_confirmation="admin123"}
it{should_not be_valid}
end
#调用相关方法是否能返回期待的结果
#userInfo方法选择项目成员时显示的用户信息的文字
describe "returns the user info when choice the members of the project" do
context "第一种情况" do
@user=User.new()
expect(@user.userInfo).to eq ''
end
context "二种情况" do
@user=User.new()
expect(@user.userInfo).to eq ''
end
end
# def name
# [firstname, lastname].join(' ')
# end
# it "returns a contact's full name as a string" do
# contact = Contact.new(firstname: 'John', lastname: 'Doe',
# email: 'johndoe@example.com')
# expect(contact.name).to eq 'John Doe'#调用contact的name方法
# end
end